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


12
$ ssh usaname@login.somehost.no

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环境变量吗?

(编辑:固定格式)

ssh  cygwin 

Answers:


9

看一看/etc/passwd。确保那里的条目与您期望的主目录匹配。这是用户输入的倒数第二个字段。


4

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

db_home: /%H

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


在安装cygwin之前,我已经设置HOME%USERPROFIEL%in环境变量。因此... / home / <myusername>尚未创建(/etc/passwd cannot be found)。并且无法在%USERPROFILE%中使用ssh键。db_home: /%H完美解决问题。非常感谢!
Marslo

2

在/etc/nsswitch.conf中:

db_home:  windows

请参见db_home设置。这告诉Cygwin仅将Windows %USERPROFILE%目录用作Cygwin $ HOME。

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

%HOME%在OS级别上的设置无效(即使$HOME以bash正确显示该设置也是如此)。

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



0

设置db_home/etc/nsswitch.conf该路径到您家。这是MSYS2 建议的方法。

添加HOME环境变量也可以

Git的换Windows包含envdb_home,应阅读你HOME的bash变量,但是,它是不可靠的


1
编辑方式如何?您将db_home设置为什么?
Andrew Schulman

@AndrewSchulman到我要用作主目录的目录吗?
VarunAgw 2015年

1
哇!这是很多有用的信息。感谢您编辑@ go2null :)
VarunAgw

该答案实际上没有列出“推荐”链接的bug的建议。链接的错误说:db_home: windows cygwin desc
Gordon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.