Git не запрашивает парольную фразу во время пул / пуш в терминале

Я пытаюсь использовать git из терминала на своем рабочем столе Ubuntu 12.04. Мой репозиторий находится на Github, и у меня есть ключ для моего рабочего стола. Всякий раз, когда я делаю «git pull» или «git push», появляется диалоговое окно с запросом моей парольной фразы. Это работает нормально, если я правильно набрал кодовую фразу. Однако, если я подключен к своему рабочему столу через ssh и выполняю git pull или push, команда не запрашивает фразу-пароль и выдает следующую ошибку:

Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Эта ошибка имеет смысл, поскольку Я не ввожу мою фразу-пароль. Итак, вопрос в том, как я могу получить фразу-пароль в терминале?

Спасибо!

1
задан 21 October 2012 в 20:04

2 ответа

Думаю, я понял это. После запуска ssh -vT git@github.com я заметил, что мой ключ не был включен в список ключей, которые проверялись на аутентификацию:

debug1: Trying private key: /home/***/.ssh/id_rsa
debug1: Trying private key: /home/***/.ssh/id_dsa
debug1: Trying private key: /home/***/.ssh/id_ecdsa
debug1: No more authentication methods to try.

я решил, что каким-то образом мне нужно было сказать ssh использовать мой конкретный ключ при подключении к github.com. Я добавил запись github в мой файл ~ / .ssh / config

Host github.com
    IdentityFile ~/.ssh/id_github.pub

. После этого команда ssh и команды git push / pull запрашивают у меня пароль в терминале и успешно подключаются. Я до сих пор не знаю, почему, когда команда запускается с рабочего стола, появляется диалоговое окно для правильного ключа. Кто-нибудь знает, почему это работает?

Спасибо!

0
ответ дан 21 October 2012 в 20:04

Если вы хотите использовать push / pull для git на машине, к которой вы подключены через ssh, используя ssh-версию протокола git, вы можете сделать это одним из двух способов:

1) Не переадресовывать агента (ssh -A) при подключении к машине, и убедитесь, что ключ, который вы хотите использовать, находится на хосте, к которому вы подключаетесь, и ssh ищет его. Вы можете сделать это с помощью опции IdentifyFile для Host в конфигурационном файле ssh. Обратите внимание, что вы должны указать файл закрытого ключа, а не файл открытого ключа.

2) Перенаправьте агента с помощью ssh -A при подключении к хосту, на котором вы хотите использовать git, и убедитесь, что закрытый ключ доступен на клиентском компьютере, с которого вы подключаетесь, и что ssh может его найти.

Для большей безопасности вы можете использовать разные ключи для каждой машины и добавлять открытые ключи для ключей, которые вы используете для github, для каждой машины, в свою учетную запись github. Таким образом, если один ключ скомпрометирован, вам нужно заменить его только в одном месте, а не пытаться убедиться, что у вас везде одинаковые ключи.

0
ответ дан 21 October 2012 в 20:04

Другие вопросы по тегам:

Похожие вопросы: