$ 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%
不起作用(尽管$HOME
bash 正确反映了该设置)。
从原始问题中可以看出,SSH 正在尝试更新 Windows 主目录,在 Vidar 的旧版 Windows 中是C:\Documents and Settings\vidar kongsli
。在当前版本(我认为是 7+)中,等效于C:\Users\%USERNAME%
(或者,如果 Windows 未安装在 C: 上,则%SystemDrive%\Users\%USERNAME%
)。
答案4
变量是否HOME
已导出? 再试export HOME
一次ssh
: