(git bash) нажатие на битбакет игнорирует ключ SSH

Я следил за кучей цепочек блога в Интернете, чтобы узнать, как все должно быть настроено, и у меня есть следующая ситуация:

Прежде всего, ssh -T [email protected] возвращает следующий результат

conq: logged in as myuser.
You can use git or hg to connect to Bitbucket. Shell access is disabled.

Это означает, что я правильно настроил ssh-ключ как локально, так и в битбакете, согласился?

У меня есть ~/.ssh/config со следующим содержимым:

Host bitbucket.org
 IdentityFile ~/.ssh/id_rsa

Этот ключ существует, конечно.

Однако, когда я пытаюсь выполнить команду (взятую из другого учебника) git push origin master, я получу всплывающее сообщение:

---------------------------
PuTTY Fatal Error
---------------------------
Disconnected: No supported authentication methods available (server sent: publickey)
---------------------------
OK   

Ответ 1

Судя по ошибке PuTTY Fatal Error, похоже, что Git пытается использовать PuTTY для аутентификации с помощью ssh. Дело в том, что PuTTY не знает о вашей настройке в ~/.ssh вообще. Значение параметра ~/.ssh имеет смысл только при использовании openssh, поставляемого с Git Bash. Похоже, вы установили переменную среды GIT_SSH в plink.exe, которая является инструментом, который содержит часть PuTTY.

У вас есть два варианта: вы можете использовать PuTTY и plink.exe для операций ssh, или вы можете использовать openssh, который является частью Git Bash.

Если вы используете PuTTY, вам нужно управлять вашими ключами ssh с помощью pageant.exe, который также является частью PuTTY. Это довольно хороший инструмент. Запустите его, и на панели задач вы увидите значок. Щелкните правой кнопкой мыши по этому значку, чтобы добавить свой закрытый ключ. Другим шагом для использования PuTTY является установка GIT_SSH, но похоже, что вы уже это сделали. В этой настройке git push будет использоваться plink.exe, который является частью PuTTY, правильно найдет секретные ключи, хранящиеся в pageant.ext.

Если вы хотите использовать openssh, который является частью Git Bash, тогда вам нужно только избавиться от установки GIT_SSH. Один из способов убедиться, что параметр действительно пуст при использовании git push, - это если вы выполните команду следующим образом:

GIT_SSH= git push origin master

Ответ 2

После того, как все остальные ответы не сделали этого для одного из моих коллег, я понял следующее:

Так как нажатие на пульты, такие как beanstalk works (https), и даже ssh работает с помощью консоли git bash, я полагал, что это должно иметь какое-то отношение к тому, как SSH будет вызван, наш пульт был примерно таким:/p >

[email protected]:/path/to/repo.git

Итак, простой which ssh дал нам /bin/ssh

В профиле .bashrc мы просто добавили

export GIT_SSH=/bin/ssh.exe

и вуаля.

Более простым решением было бы купить mac!:)

Счастливое gitting

Ответ 3

Вы пытаетесь подключиться к Bitbucket через SSH, а не через Git, о чем говорит первая ошибка. То, что вам не разрешено подключаться к Bitbucket таким образом.

Когда вы настроите свое репо, если вы отключены от существующего в Bitbucket, все, что вам нужно было бы сделать, это:

git clone [email protected]:<UserName>/<Name of the Repo>.git

Появится сообщение о принятии ключа, и все будет установлено.

Теперь, если у вас уже есть существующее репо, вы можете добавить удаленный доступ, но добавьте его в .git/config

Вы добавили бы [email protected]:<UserName>/<Name of the Repo>.git в раздел [remote "origin"].

Ответ 4

Попробуйте использовать cmd.exe. Git Bash похоже, имеет проблемы с переменными среды на моей машине.

В CMD, echo %GIT_SSH%, чтобы убедиться, что он установлен (PuTTY/Plink делает это). Если он установлен, и вы хотите использовать openssh, очистите его с помощью set GIT_SSH=.

После этого я мог бы нажать и потянуть с помощью ssh в CMD без проблем, хотя Git Bash все еще не работает.