git SSH 在 Windows 上寻找公钥/私钥对的位置错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/2840871/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
SSH is looking in the wrong place for the public/private key pair on Windows
提问by Michael Morisy
I'm trying to configure GIT on my Windows XP machine, but SSH keeps creating and looking for the public/private key pair in non-sensical places, e.g. /.ssh/id_rsa
我试图在我的 Windows XP 机器上配置 GIT,但 SSH 不断在无意义的地方创建和寻找公钥/私钥对,例如 /.ssh/id_rsa
Is there a configuration file in the GIT Installation for Windows where I can switch this to my home directory, or another user defined place? By default, it offers to create new key pairs at //.ssh/id_rsa but that gives me the error "Could not create directory '//.ssh'." And when I'm able to find a directory I can create it in, GIT won't look there.
Windows 的 GIT 安装中是否有配置文件,我可以将其切换到我的主目录或其他用户定义的位置?默认情况下,它提供在 //.ssh/id_rsa 上创建新密钥对,但这给了我错误“无法创建目录 '//.ssh'”。当我能够找到一个可以在其中创建它的目录时,GIT 不会在那里查找。
回答by Michael Morisy
Figured out how to manually set my home directory in Windows XP:
弄清楚如何在 Windows XP 中手动设置我的主目录:
- Right click "My Computer"
- Choose the "Advanced" tab
- Click the "Environmental Variables" button
- Under the "System variables" section, click "New"
- In the "Variable name" enter in "home".
- In the "Variable value" enter in the path to your profile.
- 右击“我的电脑”
- 选择“高级”选项卡
- 单击“环境变量”按钮
- 在“系统变量”部分下,单击“新建”
- 在“变量名”中输入“家”。
- 在“变量值”中输入您的配置文件的路径。
To do the same via command prompt do :
要通过命令提示符执行相同操作,请执行以下操作:
setx HOME "your\path\to\home"
( Please note the suffix x - This is used to persist the change )
(请注意后缀 x - 这用于保持更改)
回答by go2null
Recommendedmethod from MSYS2 is to set db_home
in /etc/nsswitch.conf
to your home directory.
建议从MSYS2方法是设置db_home
在/etc/nsswitch.conf
你的home目录。
Credit to @VarunAgwfor pointingin the right direction.
Git-for-Windows includes env
in db_home
, which should read your HOME
bash variable, however, it is unreliable.
Git-for-Windows 包含env
in db_home
,它应该读取您的HOME
bash 变量,但是,它是不可靠的。
回答by Bouke Versteegh
Check which ssh
to see if you are using /usr/bin/ssh
or something else, that might have installed by accident.
检查which ssh
您是否正在使用/usr/bin/ssh
或其他可能意外安装的东西。
In my case my ssh was replaced by Chocolateyafter installing rsync
. After running choco uninstall rsync
, my SSH was working again.
在我的情况下,我的 ssh在安装后被Chocolatey替换rsync
。运行后choco uninstall rsync
,我的 SSH 又开始工作了。
回答by craig
I was having a similar problem on Windows 7. The HOME
environment variable seemed to be set correctly:
我在 Windows 7 上遇到了类似的问题。HOME
环境变量似乎设置正确:
$ echo $HOME
C:\Users\craibuc
However, attempts to connect to test github's ssh
access failed:
但是,尝试连接以测试 github 的ssh
访问失败:
$ ssh -Tv [email protected]
OpenSSH_6.6.1, OpenSSL 1.0.1i 6 Aug 2014
debug1: Connecting to github.com [192.30.252.129] port 22.
debug1: Connection established.
Could not create directory 'C/.ssh'.
debug1: identity file C/.ssh/id_rsa type -1
debug1: identity file C/.ssh/id_rsa-cert type -1
debug1: identity file C/.ssh/id_dsa type -1
debug1: identity file C/.ssh/id_dsa-cert type -1
debug1: identity file C/.ssh/id_ecdsa type -1
debug1: identity file C/.ssh/id_ecdsa-cert type -1
debug1: identity file C/.ssh/id_ed25519 type -1
debug1: identity file C/.ssh/id_ed25519-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.6.1
debug1: Remote protocol version 2.0, remote software version libssh-0.6.0
debug1: no match: libssh-0.6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-sha1 none
debug1: kex: client->server aes128-ctr hmac-sha1 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server host key: RSA 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48
The authenticity of host 'github.com (192.30.252.129)' can't be established.
RSA key fingerprint is xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (C/.ssh/known_hosts).
debug1: ssh_rsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Trying private key: C/.ssh/id_rsa
debug1: Trying private key: C/.ssh/id_dsa
debug1: Trying private key: C/.ssh/id_ecdsa
debug1: Trying private key: C/.ssh/id_ed25519
debug1: No more authentication methods to try.
Permission denied (publickey).
For some reason, ssh
was attempting to access C/.ssh
.
出于某种原因,ssh
试图访问C/.ssh
.
When I set the variable using setx HOME /c/users/craibuc
and restarted the shell, I was able to connect:
当我使用设置变量setx HOME /c/users/craibuc
并重新启动 shell 时,我能够连接:
$ ssh -T [email protected]
Warning: Permanently added the RSA host key for IP address '192.30.252.130' to the list of known hosts.
Hi craibuc! You've successfully authenticated, but GitHub does not provide shell access.
回答by nathanchere
I had the same kind of problem when using a machine with domain policy setting the user profile to a network drive (in this case mapped to Z:
).
在使用具有域策略的计算机将用户配置文件设置为网络驱动器(在这种情况下映射到Z:
)时,我遇到了同样的问题。
When trying to do anything from Powershell I'd get messages like this. Setting home
PATH variable didn't help.
尝试从 Powershell 执行任何操作时,我会收到这样的消息。设置home
PATH 变量没有帮助。
git clone ssh://[email protected]:1234/myproject
Cloning into 'myproject'...
Could not create directory '/z/.ssh'.
The authenticity of host '[mydomain.com]:1234 ([1.1.1.1]:1234)' can't be established.
RSA key fingerprint is 00:11:22:33::55:66:77:88.
Are you sure you want to continue connecting (yes/no)? yes
Failed to add the host to the list of known hosts (/z/.ssh/known_hosts).
Permission denied (publickey).
Please make sure you have the correct access rights
and the repository exists.
When I cloned from git bash it was fine, as /z/.ssh
etc is a valid way to point to Z:\.ssh
from a shell.
当我从 git bash 克隆时,它很好,因为/z/.ssh
etc 是Z:\.ssh
从 shell指向的有效方法。
回答by rofrol
ln -s /c/Users/rofrol/.ssh /home/rofrol/
worked for me.
ln -s /c/Users/rofrol/.ssh /home/rofrol/
对我来说有效。
This did not:
这没有:
$ echo $HOME
/c/Users/rofrol
$ cat ~/nsswitch.conf
db_home: /c/Users/rofrol
$ cat /home/rofrol/nsswitch.conf
db_home: /c/Users/rofrol
$ cat /etc/nsswitch.conf
# Begin /etc/nsswitch.conf
passwd: files db
group: files db
db_enum: cache builtin
#db_home: cygwin desc
db_home: /c/Users/rofrol
db_shell: cygwin desc
db_gecos: cygwin desc
# End /etc/nsswitch.conf
Probably because of this:
大概是因为这个:
SSH will require /home/$USER
SSH 将需要 /home/$USER
https://github.com/git-for-windows/git/issues/736#issuecomment-215123009
https://github.com/git-for-windows/git/issues/736#issuecomment-215123009
回答by Dynamite Blitzer
On Windows 7 Just Place your Private Key ( id_rsa ) inside C:\Users\.ssh FOLDER If .ssh Folder doesnt exist just create it. Download GIT for Windows, cd into your Project Directory and do git clone ssh://@/.git
在 Windows 7 上,只需将您的私钥 ( id_rsa ) 放在 C:\Users\.ssh 文件夹中 如果 .ssh 文件夹不存在,则创建它。下载适用于 Windows 的 GIT,cd 到您的项目目录并执行 git clone ssh://@/.git