Назад | Перейти на главную страницу

Как получить корневую учетную запись Ubuntu для пересылки ключей ssh ​​в качестве машины пересылки

ОБНОВЛЕНИЕ: все, что описано ниже, отлично работает для некорневой учетные записи на удаленной машине.

То есть это работает:

anderson@client -> nonroot@remote -> anderson's-ssh-key@github.com

Это делает не работа, однако:

anderson@client -> root@remote -> anderson's-ssh-key@github.com

Итак, вопрос в том, как заставить работать пересылку ssh-агента, когда машина посередине является root?


На локальном компьютере (OSX) в файле ~ / .ssh / config включена пересылка:

Host remotehost
    ForwardAgent yes

Локальный компьютер не отменяет этот параметр в / etc / ssh / ssh_config.

Host *
#   ForwardAgent no

На локальной машине запущен ssh-agent:

anderson$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-L0iFZ891Gv/agent.75083; export SSH_AUTH_SOCK;
SSH_AGENT_PID=75084; export SSH_AGENT_PID;
echo Agent pid 75084;

ssh-add был выполнен для ключа:

anderson$ ssh-add -K ~/.ssh/id_rsa
Passphrase updated in keychain: /Users/anderson/.ssh/id_rsa
Identity added: /Users/anderson/.ssh/id_rsa (/Users/anderson/.ssh/id_rsa)

$ SSH_AUTH_SOCK есть:

anderson$ echo $SSH_AUTH_SOCK
/tmp/launch-pg2gVc/Listeners

ssh-ключ был загружен на GitHub и работает:

anderson$ ssh -T git@github.com
Hi [elided]! You've successfully authenticated, but GitHub does not provide shell access.

Удаленный компьютер (Ubuntu 12.04LTS) имеет открытый ключ ssh с локального компьютера и работает:

anderson$ ssh root@remotehost
[root@host1~]#

На удаленном компьютере настроен AllowAgentForwarding:

[root@host1~]# head /etc/ssh/sshd_config
# Package generated configuration file
# See the sshd_config(5) manpage for details

AllowAgentForwarding yes

И вот где он выглядит грушевидным: SSH_AUTH_SOCK нигде не находится на пульте дистанционного управления:

[root@host1~]# echo $SSH_AUTH_SOCK

**crickets**

И, конечно, пересылки ключей тоже нигде нет:

[root@host1~]# ssh -T git@github.com
Permission denied (publickey).

Даже заставить его так не работать:

anderson$ ssh -A root@remotehost

Вывод отладки:

anderson$ ssh -vvv -A root@remotehost
OpenSSH_5.6p1, OpenSSL 0.9.8r 8 Feb 2011
debug1: Reading configuration data /Users/anderson/.ssh/config
debug1: Applying options for remotehost
debug1: Applying options for *
debug1: Reading configuration data /etc/ssh_config
debug1: Applying options for *
debug1: auto-mux: Trying existing master
debug2: fd 3 setting O_NONBLOCK
debug2: mux_client_hello_exchange: master version 4
debug3: mux_client_request_forwards: requesting forwardings: 0 local, 0 remote
debug3: mux_client_request_session: entering
debug3: mux_client_request_alive: entering
debug3: mux_client_request_alive: done pid = 45287
debug3: mux_client_request_session: session request sent
debug1: mux_client_request_session: master session id: 3

Так я что-то упускаю? Мне кажется, я рассмотрел все основы отладки. Есть идеи, что еще я могу проверить?

У меня был аналогичный случай, и причина заключалась в том, что оболочка, которую я использовал, устанавливала ControlPath вариант, и SSH также застрял на debug1: mux_client_request_session: master session id: 3. Удаление каталога, указанного в ControlPath решил проблему.