(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 все еще не работает.