如何处理 Windows 的 SSH 配置文件中的空格?

wap*_*ppa 5 windows ssh config path git-bash

我目前正在 Windows 上使用 Git Bash 通过 SSH 连接到 Linux 服务器。

\n\n

目录中正在使用配置文件:“\xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaaC:\\Users\\FirstName LastName.ssh\\config”

\n\n

配置文件如下所示:

\n\n
Host hub\n    HostName 192.168.1.151\n    User root\n    IdentityFile \xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaaC:\\Users\\FirstName LastName\\.ssh\\hub\n
Run Code Online (Sandbox Code Playgroud)\n\n

正如您所看到的,IdentityFile 中的名字和姓氏之间有一个空格字符。这会导致 Git Bash 无法读取指定的路径。它打印此错误:/c/Users/FirstName LastName/.ssh/config line 4: garbage at end of line; "LastName\\\\.ssh\\\\hub".

\n\n

我尝试使用引号来指定字符串,并且尝试在 IdentityFile 路径中使用 %USERPROFILE% 变量,因此没有空格。

\n\n

带引号的解决方案会导致此错误:

\n\n
no such identity: \\342\\200\\252\\342\\200\\252\\342\\200\\252\\342\\200\\252C:\\\\Users\\\\FirstName LastName\\.ssh\\\\hub: No such file or directory\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后向我询问密码:

\n\n
root@192.168.1.151\'s password:\n
Run Code Online (Sandbox Code Playgroud)\n\n

%USERPROFILE% 的解决方案给了我这个错误:

\n\n
percent_expand: unknown key %U\n
Run Code Online (Sandbox Code Playgroud)\n\n

所以我基本上被困在这里,关于如何解决这个问题有什么想法吗?

\n

wap*_*ppa 3

所以,当我使用 IdentityFile 的引号时,我实际上正确地解决了这个问题。问题是,当我将路径(我从 Windows 资源管理器内的文件属性复制)粘贴到配置文件中以定义 IdentityFile 时,有些字符对编辑器来说是不可见的。这些字符让 Git Bash 中的 SSH 客户端感到困惑。复制路径的开头出现意外字符。

Windows 有时很奇怪:/

通常,在文件上运行此命令将删除不可见字符:

sed -i '1s/^.*#//;s/\r$//' {FILENAME}
Run Code Online (Sandbox Code Playgroud)