我在构建服务器脚本中使用Git For Windows(不是msys或GitHub)。我们有一个自托管的BitBucket存储库,配置了SSH访问密钥。我正在尝试通过命令行在我的构建脚本中进行初始克隆,并且它因SSH错误而失败/
这是我的环境:
known_hosts
文件以下是在克隆操作期间从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上成功。我可以看到配置没有区别
答案 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密钥,但至少有一种解决方法。