让我也分享一下我的经验,
我试图从Gerrit回购中克隆一些项目,我在帐户设置中获得了我的公钥。
在第一次尝试克隆git时,我得到了以下错误:
Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1
我发现我需要通过SSH选项-oKexAlgorithms=+diffie-hellman-group1-sha1以某种方式来git克隆。
希望GIT_SSH_COMMAND环境变量完成了这项工作:
export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"
但是git克隆仍然没有开始工作。现在它抛出(关于主题):
Permission denied (publickey).
我已经得到SSH密钥,不想重新生成它们。我检查了普通的SSH连接到主机,它是ok的:
**** Welcome to Gerrit Code Review ****
Hi XXXXX, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://xxxxx@xx.xx.xx:xxx/REPOSITORY_NAME.git
我有点困惑。我重新开始并通过-vvv选项打开SSH的调试。我看到了下面这些:
debug1: read_passphrase: can't open /dev/tty: No such device or address
可能,这是GIT_SSH_COMMAND env变量的开销-我的密钥是用passphrase保护的(我在检查登录到git repo主机时输入了它)。
所以,我决定去掉这个短语。一个简单的命令帮助了我:
ssh-keygen -p
然后,我输入了我的“旧密码”的密码短语,并在“新密码”上按了两次ENTER键,让它空着,即根本没有密码短语,并确认我的选择。
之后,我在本地磁盘上获得了新克隆的回购。