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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-10 08:23:53  来源:igfitidea点击:

SSH is looking in the wrong place for the public/private key pair on Windows

gitgithubssh-keys

提问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 中手动设置我的主目录:

  1. Right click "My Computer"
  2. Choose the "Advanced" tab
  3. Click the "Environmental Variables" button
  4. Under the "System variables" section, click "New"
  5. In the "Variable name" enter in "home".
  6. In the "Variable value" enter in the path to your profile.
  1. 右击“我的电脑”
  2. 选择“高级”选项卡
  3. 单击“环境变量”按钮
  4. 在“系统变量”部分下,单击“新建”
  5. 在“变量名”中输入“家”。
  6. 在“变量值”中输入您的配置文件的路径。

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_homein /etc/nsswitch.confto your home directory.

建议从MSYS2方法是设置db_home/etc/nsswitch.conf你的home目录。

Credit to @VarunAgwfor pointingin the right direction.

感谢@VarunAgw指向了正确的方向。

Git-for-Windows includes envin db_home, which should read your HOMEbash variable, however, it is unreliable.

Git-for-Windows 包含envin db_home,它应该读取您的HOMEbash 变量,但是,它是不可靠的

回答by Bouke Versteegh

Check which sshto see if you are using /usr/bin/sshor 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 HOMEenvironment variable seemed to be set correctly:

我在 Windows 7 上遇到了类似的问题。HOME环境变量似乎设置正确:

$ echo $HOME
C:\Users\craibuc

However, attempts to connect to test github's sshaccess 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, sshwas attempting to access C/.ssh.

出于某种原因,ssh试图访问C/.ssh.

When I set the variable using setx HOME /c/users/craibucand 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 homePATH variable didn't help.

尝试从 Powershell 执行任何操作时,我会收到这样的消息。设置homePATH 变量没有帮助。

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/.sshetc is a valid way to point to Z:\.sshfrom a shell.

当我从 git bash 克隆时,它很好,因为/z/.sshetc 是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