2013-06-25 6 views
11

Я последовал за кучу блога тропам в Интернете, чтобы узнать, как все должно быть установлено и у меня следующая ситуация:(мерзавец баш) толчок BitBucket игнорирует 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/конфигурации со следующим содержанием:

 
Host bitbucket.org 
IdentityFile ~/.ssh/id_rsa 

Этот ключ является там конечно.

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

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

ответ

19

Судя по ошибке 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 
+0

Правильно! Сегодня утром я проснулся с прозрением; помня, что ошибка на самом деле исходила из шпатлевки, я переустановил Git Bash на этот раз, настроенный с помощью openssh вместо turtyise/putty plink и т. д., и это сработало сразу. Дело в том, что у меня был запуск страницы, и там был импортирован ключ .ssh, и все равно это не сработало. Принял меня весь вечер накануне ... легко потерять время, когда речь идет о связанных с ssh вещах. –

+3

для тех, кто использует конкурс PuTTY с plink, тогда следующая команда должна быть эквивалентной (предполагается, что plink находится в PATH) 'plink -ssh git @ bitbucket.org' – icc97

+0

При использовании' GIT_SSH = git push origin master' я получаю смертельный ошибка. Что мне здесь не хватает? – BrassApparatus

1

Вы пытаетесь подключиться к 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"].

+0

Да, у меня было это уже, но все равно он не будет использовать SSH. Оказывается, это потому, что я установил GIT для использования TurtoisePlink и puttygen.exe, а не для клиента ssh с Git Bash. –

1

Попробуйте с помощью cmd.exe. У Git Bash, похоже, есть проблемы с переменными окружения на моей машине.

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

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

4

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

С толкая к пультам, как работает Beanstalk (HTTPS) и даже SSH работает с помощью консоли мерзавца Баш, я понял это должны иметь что-то делать с тем, как SSH будет вызван, наш удаленный было что-то вроде этого:

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

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

в .bashrc профиле мы J ust добавлено

и voila.

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

Happy gitting

+0

У меня есть точная проблема в mac в этот момент времени .... – Buddha

+1

Вы, сэр, - гений! Я боролся часами, и ваш однострочный лайнер фиксировал его через секунду. * Советы fedora * –

+0

Вы настолько правы, спасибо за этот ответ. Я много часов боролся с ним –