在使用Mina进行部署时,遇到类似这样的消息,但不知道为什么Git无法使用回购。
我已经尝试切换sshd_config由于Unable to negotiate a key exchange method
消息,但仍然无法弄清楚事情。 感谢您的帮助。
-----> Creating a temporary build path $ touch "deploy.lock" $ mkdir -p "$build_path" $ cd "$build_path" -----> Cloning the Git repository $ git clone "git@github.com:repo/project.git" "/home/deploy/project/scm" --bare Cloning into bare repository '/home/deploy/project/scm'... Unable to negotiate a key exchange method fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. ! ERROR: Deploy failed. -----> Cleaning up build $ rm -rf "$build_path" Unlinking current $ rm -f "deploy.lock" OK ! Command failed. Failed with status 1 (19)
问题是,你的本地SSH客户端和GitHub的远程端点无法就共同的密钥交换方法达成一致。
当你使用一组可用的密钥交换方法时,或者你正在使用一个非常老旧的SSH客户端,它不支持任何仍然被认为是安全的方法时,这种情况大多会发生。
有趣的是,这只发生在一些 GitHub Repos上:我仍然可以从其他报告中获得。
要诊断您可以设置以下环境变量以查看更多的SSH输出:
export GIT_SSH_COMMAND="ssh -vv"
为了解决这个问题,我在config_ssh
或~/.ssh/.config
添加了一个自定义条目,允许为该主机提供更多的传统算法。 请注意,这应该出现在任何Host *
部分之上 :
# Github needs diffie-hellman-group-exchange-sha1 some of the # time but not always. Host github.com KexAlgorithms curve25519-sha256@libssh.org,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1