ssh 在 Cygwin 中使用错误的主目录

ssh 在 Cygwin 中使用错误的主目录
$ ssh [email protected]

Could not create directory'/cygdrive/c/Documents and Settings/vidar kongsli/.ssh'.
The authenticity of host 'login.somehost.no (...)' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)? no
Host key verification failed.

$ set | grep HOME

HOME=/cygdrive/d/home/vidar
HOMEDRIVE=C:
HOMEPATH=/cygdrive/d/home/vidar

$ ls ~/.ssh

id_rsa  id_rsa.pub

知道为什么 ssh 在尝试定位 ~/.ssh 时不使用 $HOME 环境变量吗?

(编辑:固定格式)

答案1

查看/etc/passwd。确保那里的条目与您预期的主目录相匹配。它是用户条目的倒数第二个字段。

答案2

如果您的$HOME变量已设置,但 ssh 无法识别它,请将此行放入/etc/nsswitch.conf

db_home: /%H

这将设置 Cygwin 主目录,而不需要 /etc/passwd 文件存在。

答案3

在 /etc/nsswitch.conf 中:

db_home:  windows

db_home 设置。这告诉 Cygwin 仅使用 Windows%USERPROFILE%目录作为 Cygwin $HOME。

例如,如果您想在 git(GitHub Enterprise)和 SSH 与各种本地 Unix/Linux 系统之间共享相同的 SSH 密钥,则这是必要的。

在操作系统级别进行设置%HOME%不起作用(尽管$HOMEbash 正确反映了该设置)。

从原始问题中可以看出,SSH 正在尝试更新 Windows 主目录,在 Vidar 的旧版 Windows 中是C:\Documents and Settings\vidar kongsli。在当前版本(我认为是 7+)中,等效于C:\Users\%USERNAME%(或者,如果 Windows 未安装在 C: 上,则%SystemDrive%\Users\%USERNAME%)。

答案4

变量是否HOME已导出? 再试export HOME一次ssh

相关内容