Позвольте мне также поделиться своим опытом,
Я пытался клонировать какой-то проект из репозитория 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
Я понял, что мне нужно каким-то образом передать опцию SSH -oKexAlgorithms=+diffie-hellman-group1-sha1
на 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
Я был немного смущен. Я снова начал и включил отладку для SSH через опцию -vvv
. И я увидел следующее:
debug1: read_passphrase: can't open /dev/tty: No such device or address
Возможно, это была перегрузка для переменной GIT_SSH_COMMAND
env - мой ключ был защищен парольной фразой (и я ввел ее, когда проверял вход в систему на хосте git repo).
Итак, тогда я решил избавиться от фразы. Мне помогла простая команда:
ssh-keygen -p
Затем я ввел свою ключевую фразу для «старой парольной фразы» и просто дважды нажал ENTER на «новом парольном ресурсе», чтобы оставить его пустым, т. Е. Без пароля и подтвердить свой выбор.
После этого я получил только что клонированный репо на своем локальном диске.