Я хочу иметь возможность подключиться к серверу, запустить оболочку sudo, а затем использовать перенаправление агента для подключения к другому серверу (чтобы использовать SCP для копирования файлов в защищенную область). Но:
ubuntu@tunnelator:/var/www$ ssh -p 10022 stevebennett@localhost
Last login: Fri Apr 5 10:54:03 2013 from localhost
~ exit
Connection to localhost closed.
ubuntu@tunnelator:/var/www$ sudo ssh -p 10022 stevebennett@localhost
Password:
Предположительно, запуск оболочки sudo убивает пересылку агента. Разница вот в чем:
debug1: Offering RSA public key: id_rsa
debug1: Server accepts key: pkalg ssh-rsa blen 277
debug1: Authentication succeeded (publickey).
против:
debug1: Next authentication method: publickey
debug1: Trying private key: /root/.ssh/id_rsa
debug1: Trying private key: /root/.ssh/id_dsa
debug1: Trying private key: /root/.ssh/id_ecdsa
debug1: Next authentication method: keyboard-interactive
Есть ли способ заставить это работать? (Установка примерно такая, как описано здесь: http://codysoyland.com/2010/jun/6/ssh-tip-automatic-reverse-tunnels-workflow-simplif/)
Благодаря предложению user157963 это оказалось легко:
sudo -E ssh -p 10022 stevebennett@localhost
Или, чтобы быть более избирательным, вы можете сделать это:
sudo su -l -c "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK; ssh -p 10022 stevebennett@localhost"
(Обратите внимание, это работает только при использовании su'ing для пользователя root - он должен иметь возможность читать исходный файл сокета.)
Я ошибочно подумал, что переменная окружения $ SSH_AUTH_SOCK уже сохраняется. Совет: следующая команда ничего полезного не скажет :)
sudo echo $SSH_AUTH_SOCK
В то время как это делает:
sudo bash -c 'echo $SSH_AUTH_SOCK'