36

我正在尝试在我的 Windows XP 机器上配置 GIT,但 SSH 不断在无意义的地方创建和查找公钥/私钥对,例如 /.ssh/id_rsa

Windows 的 GIT 安装中是否有配置文件,我可以将其切换到我的主目录或其他用户定义的位置?默认情况下,它提供在 //.ssh/id_rsa 创建新的密钥对,但这给了我错误“无法创建目录 '//.ssh'”。当我能够找到一个可以在其中创建它的目录时,GIT 不会在那里查找。

4

7 回答 7

74

弄清楚如何在 Windows XP 中手动设置我的主目录:

  1. 右键单击“我的电脑”
  2. 选择“高级”选项卡
  3. 单击“环境变量”按钮
  4. 在“系统变量”部分下,单击“新建”
  5. 在“变量名”中输入“家”。
  6. 在“变量值”中输入您的配置文件的路径。

要通过命令提示符执行相同操作,请执行以下操作:

setx HOME "your\path\to\home"

(请注意后缀 x - 这用于持久化更改)

于 2010-05-15T16:45:33.307 回答
9

MSYS2推荐的方法是设置db_home/etc/nsswitch.conf您的主目录中。

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

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

于 2016-08-10T16:14:52.153 回答
5

检查which ssh您是否正在使用/usr/bin/ssh或其他可能意外安装的东西。

在我的情况下,我的 ssh在安装后被Chocolateyrsync取代。运行后choco uninstall rsync,我的 SSH 又开始工作了。

于 2018-01-03T10:59:46.203 回答
3

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

$ echo $HOME
C:\Users\craibuc

但是,尝试连接以测试 github 的ssh访问失败:

$ ssh -Tv git@github.com
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).

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

当我使用设置变量setx HOME /c/users/craibuc并重新启动 shell 时,我能够连接:

$ ssh -T git@github.com
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.
于 2014-12-09T13:53:30.833 回答
0

Z:在使用域策略将用户配置文件设置为网络驱动器(在本例中映射到)的机器时,我遇到了同样的问题。

当尝试从 Powershell 做任何事情时,我会收到这样的消息。设置homePATH 变量没有帮助。

git clone ssh://myusername@mydomain.com: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:$4: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.

当我从 git bash 克隆时它很好,因为etc 是从 shell/z/.ssh指向的有效方法。Z:\.ssh

于 2015-03-23T13:50:34.667 回答
0

ln -s /c/Users/rofrol/.ssh /home/rofrol/为我工作。

这没有:

$ 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

大概是因为这个:

SSH 将需要 /home/$USER

https://github.com/git-for-windows/git/issues/736#issuecomment-215123009

于 2018-09-03T08:37:35.197 回答
-3

在 Windows 7 上,只需将您的私钥 ( id_rsa ) 放入 C:\Users\.ssh 文件夹 如果 .ssh 文件夹不存在,只需创建它。下载适用于 Windows 的 GIT,cd 进入您的项目目录并执行 git clone ssh://@/.git

于 2011-07-15T09:52:52.413 回答