使用Git For Windows的SSH失败

时间:2017-02-24 16:38:50

标签: windows git ssh

我在构建服务器脚本中使用Git For Windows(不是msys或GitHub)。我们有一个自托管的BitBucket存储库,配置了SSH访问密钥。我正在尝试通过命令行在我的构建脚本中进行初始克隆,并且它因SSH错误而失败/

这是我的环境:

  • Windows Server 2012
  • Git For Windows 1.9.4
  • 存储在%USERPROFILE%\。ssh
  • 中的SSH密钥
  • .ssh \ config指向我的git服务器域的正确SSH密钥
  • 我的服务器位于我的known_hosts文件
  • SysInternals ProcMon显示在克隆操作期间正在检查ssh密钥
  • 使用Git for Windows附带的Git Bash窗口进行相同的克隆操作。所以这排除了一个无效的密钥(我相信)

以下是在克隆操作期间从SSH登录的Loglevel DEBUG3:

 [exec] debug3: send packet: type 30
 [exec] debug1: sending SSH2_MSG_KEX_ECDH_INIT
 [exec] debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
 [exec] debug3: receive packet: type 31
 [exec] debug1: Server host key: ssh-rsa SHA256:K7Y..

 [exec] debug3: put_host_port: [x.x.x.x]:7999
 [exec] debug3: put_host_port: [xxxmyserverxxx.local]:7999
 [exec] debug1: checking without port identifier
 [exec] debug1: read_passphrase: can't open /dev/tty: No such device or address
 [exec] Host key verification failed.
 [exec] fatal: Could not read from remote repository.
 [exec]
 [exec] Please make sure you have the correct access rights
 [exec] and the repository exists.

我无法判断“无法打开/ dev / tty”问题是否是真正的交易破坏者。我甚至不知道/ dev / tty会等同于Windows命令窗口内部。

更令人沮丧的是,这种确切的操作类型在我使用相同SSH密钥对的另一个repo上成功。我可以看到配置没有区别

1 个答案:

答案 0 :(得分:0)

read_passphrase: can't open /dev/tty: No such device or address是您的交易突破口。 Git需要获取您的ssh密钥的密码,但不能,因为它无法访问tty(stdin)。您是从Git Bash还是从其他终端运行git命令?

作为一种解决方法,您可以创建一个无密码的ssh密钥,而改用该密钥。为了使它正常工作,请在您的Git Bash主目录中,设置类似于以下示例的内容:

$ ssh-keygen -b 4096 -t rsa -N "" -f "${HOME}/.ssh/id_rsa_passwordless"

$ cat <<EOF >>.ssh/config
Host github.com
  HostName github.com
  IdentityFile ~/.ssh/id_rsa_passwordless
EOF

当然,最好在Git Bash下使用带有密码的SSH密钥,但至少有一种解决方法。