【问题标题】:scp on OSX doesn't allow spaces in usernames?OSX 上的 scp 不允​​许用户名中有空格?
【发布时间】:2012-03-14 13:50:40
【问题描述】:

我需要通过 ssh 连接到运行 MobaSSH 作为其 SSH 守护进程的 Windows 7 机器,并且 Windows 机器上的用户名包含一个空格。我可以像这样登录到 OSX 终端上的 Windows 7 框:

ssh "Some User"@WindowsHost

所以我认为我可以在 OSX 上使用 scp 命令在计算机之间传输文件,但是每当我执行以下操作时,我都会收到一条错误消息,提示“用户名无效”:

scp myfile "Some User"@WindowsHost:~/myfile

我查看了它并找到了this question on stackoverflow,但这主要是关于文件路径中的一个空格。

我确实找到了a bug posted about this issue in a specific version of scp,但我不确定如何在 OSX 上修补 scp。该补丁以 .c 文件的形式提供。

我最后的办法是在 Windows 7 机器上创建一个新用户名,并将我的所有配置文件设置转移给该新用户。考虑到我可以通过 ssh 登录,但不能通过 scp 登录,这似乎真的很麻烦。

有什么建议吗?

【问题讨论】:

    标签: windows ssh openssh


    【解决方案1】:

    为您的 Mac 用户的 ssh 配置添加一个特殊配置,通常在 ~/.ssh/config 中

    Host mySpaceyUsernameHost
    User "Some User"
    HostName WindowsHost
    

    然后您应该能够使用该命名配置对您的文件进行 scp:

    scp myfile mySpaceyUsernameHost:~/myfile
    

    我刚刚在 OS X 10.7 (Lion) 上尝试过这个,它可以在一台 Mac 上运行到另一台 Mac,而其他选项(引用或反冲转义)没有......所以就是这样。

    【讨论】:

    • 这就像一个魅力。从未听说过配置文件,感谢您阐明它可以做什么!
    • 非常有用!这也适用于 OS/X 远程主机。我刚刚这样做是为了从 OS/X scp 到 OS/X,其中远程用户名中有一个空格。
    • 对于任何想知道(像我一样)这也适用于 Ubuntu 的人 =) Escape username spaces in SCP
    【解决方案2】:

    你试过Some\ User@WindowsHost吗?除非 scp 中确实存在错误,否则转义的空间可能会起作用。

    或者,您是否可以不只是更改 widows 7 用户名并删除空格?

    【讨论】:

    • 反斜杠技巧对我不起作用(OS X 10.7)我认为这实际上是一个错误。但是主机的配置条目确实有效(见我上面的回答)。
    • 是的,我试过了,但是没有用。谢谢你的建议。
    【解决方案3】:

    用下划线替换空格:

    scp file "User Name@host":
    

    变成

    scp file User_Name@host:
    

    使用scp 从 Linux 到 Mac OS X。

    【讨论】:

      猜你喜欢
      • 2017-01-28
      • 2016-10-14
      • 2018-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2022-11-30
      相关资源
      最近更新 更多