3

Я пытаюсь подключить ssh к компьютеру (назовем его B) с компьютера (назовем его A), а затем запустить на этом компьютере команду (B), для которой обычно требуется ввести ssh-фразу (если вам интересно Я пытаюсь git pull из частного репозитория на BitBucket).

Я могу ssh в B из A (без ввода ключевой фразы) и могу запускать команды на этом компьютере, например так:

A > ssh B 'ls'

Я также могу ssh в B из A , и запустить мой git pull , и он запрашивает фразу-пароль:

A > ssh B
B > git pull
Enter passphrase for key '/home/username/.ssh/id_rsa': 

Однако, если я попробую git pull (для этого потребуется пароль), это произойдет:

A > ssh cbc 'git pull'
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

Любая идея, как я могу заставить работать git pull без пароля от A на B?

1 ответ1

5

Настройте ssh-agent (или эквивалентный), затем включите переадресацию агента для соединений SSH.

Включите ssh-agent на вашем локальном компьютере

"Местный" - это тот, за кем ты сидишь. Вам не нужно запускать агент где-либо еще.

Если вам повезет, один уже будет работать; большинство дистрибутивов Linux запускают экземпляр для каждого сеанса X11. Запустите ssh-add чтобы импортировать ваши ключи; ssh-add -l в список ключей.

При использовании GNOME или Mac OS X у вас, вероятно, будет собственная реализация агента, которая импортирует известные ключи при входе в систему. Однако со стандартным ssh-agent OpenSSH вам придется делать это вручную (хотя для автоматизации существуют скрипты и модули PAM).

В Windows PuTTY поставляется с Pageant, а Cygwin OpenSSH с тем же ssh-agent (хотя и более сложным в использовании, чем в Unix).

Включить переадресацию агента

После того, как агент работает и ключи загружены, попробуйте подключиться так:

A> ssh-add -l

A> ssh -A B ssh-add -l

Опция -A включает переадресацию агента по SSH-соединению, поэтому, если все работает правильно, обе приведенные выше команды должны давать одинаковый вывод.

$ ssh-add -l
2048 06:b7:29:1e:6b:ea:c3:04:c4:33:fc:48:e0:62:2f:ef grawity@anywhere (old key) (RSA)
4096 19:3c:f0:79:32:00:fa:04:2f:15:5d:2a:e2:c9:a3:ad grawity@anywhere (2011-11-01) (RSA)

$ ssh panther ssh-add -l
Could not open a connection to your authentication agent.

$ ssh -A panther ssh-add -l
2048 06:b7:29:1e:6b:ea:c3:04:c4:33:fc:48:e0:62:2f:ef grawity@anywhere (old key) (RSA)
4096 19:3c:f0:79:32:00:fa:04:2f:15:5d:2a:e2:c9:a3:ad grawity@anywhere (2011-11-01) (RSA)

Если это работает, сделайте его постоянным, отредактировав ~/.ssh/config - поместите это внизу:

Host *
    ForwardAgent yes

Вместо * вы можете указать список доверенных имен; см. справочную страницу ssh_config для точного синтаксиса.

Вы можете включить пересылку на всех машинах; нет предела тому, сколько вы можете цепи.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .