私の経験も共有させてください、
アカウント設定で公開鍵を取得したGerritリポジトリからプロジェクトのクローンを作成しようとしていました。
最初に作成しようとするgit clone
と、次のエラーが発生しました。
Unable to negotiate with XX.XX.XX.XX port XXX: no matching key exchange
method found. Their offer: diffie-hellman-group1-sha1
-oKexAlgorithms=+diffie-hellman-group1-sha1
どういうわけかSSHオプションをに渡す必要があることがわかりましたgit clone
。
うまくいけばGIT_SSH_COMMAND
、環境変数がその仕事をしました:
export GIT_SSH_COMMAND="ssh -oKexAlgorithms=+diffie-hellman-group1-sha1"
しかし、git clone
それでも機能し始めませんでした。今、それは(トピックに関して)スローします:
Permission denied (publickey).
私はすでにSSHキーを取得していて、それらを再生成したくありませんでした。ホストへのプレーンSSH接続を確認しましたが、問題ありませんでした。
**** 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変数のオーバーヘッドでした-私のキーはパスフレーズで保護されていました(そして私はgitリポジトリホストへのログインをチェックしているときにそれを入力しました)。
それで、私はその時、phasphraseを取り除くことに決めました。簡単なコマンドが役に立ちました:
ssh-keygen -p
次に、「古いパスフレーズ」のパスフレーズを入力ENTERし、「新しいパスファーレ」を2回押して、空のままにします。つまり、パスフレーズがまったくない状態にして、選択を確認します。
その後、ローカルディスクに新しく複製されたリポジトリを取得しました。