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

Сохранение пересылки агентов в sudo

Я хочу иметь возможность подключиться к серверу, запустить оболочку 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'