Забавы с OpenSSH Anton Karpov Хакер, номер #073, стр. 073-104-4 client:~$ echo "keychain --quiet" > > ~/.zlogin Keychain запустится, вызовет ssh-agent и запишет в файлы ~/.keychain/<имя_хоста> -sh, ~/.keychain/<имя_хоста> -csh информацию об агенте: client:~$ cat .keychain/myserver.org-sh SSH_AUTH_SOCK=/tmp/ssh-Rqqpaozeks/agent.697; export SSH_AUTH_SOCK; SSH_AGENT_PID=698; export SSH_AGENT_PID; Эти файлы предназначены для считывания их шеллом, в данном случае речь идет уже об интерактивной оболочке. В зависимости от того, какого она стиля (sh/csh), пропиши вызов нужного файла из конфига шелла. Так, для zsh это будет: client:~$ echo "source /home/toxa/.keychain/myserver.org-csh" > > ~/.zshrc Для bash: client:~$ echo ". /home/toxa/.keychain/myserver.org-sh" > > ~/.bashrc Последнее, что осталось сделать, - считать пассфразы всех ключей в память ssh-агента. Делается это при помощи все той же keychain. Для удобства можно написать маленькую функцию в конфиге шелла: function kchadd() { find $HOME/.ssh/ -type f -name \*_rsa -exec keychain -q {} \; } Теперь достаточно один раз запустить скрипт: client:~$ kchadd Enter passphrase for /home/toxa/.ssh/id_rsa: Identity added: /home/toxa/.ssh/id_rsa (/home/toxa/.ssh/id_rsa) Enter passphrase for /home/toxa/.ssh/sunshine_rsa: Identity added: /home/toxa/.ssh/sunshine_rsa (/home/toxa/.ssh/sunshine_rsa) И затем любая оболочка, в которой ты запускаешь ssh-сессию, будет знать о запущенном ssh-агенте, который, в свою очередь, будет знать про пассфразы. Более того, если в настройках клиента (/etc/ssh/ssh_config либо $HOME/.ssh/config) ты укажешь опцию «ForwardAgent yes», то агент будет следовать за тобой по пятам (на то он и агент), на какую бы машину ты не заэсэсэйчился. Таким образом, если с машины, на которой лежат секретные ключи, ты зашел на промежуточный сервер (например чтобы не светить свой оригинальный IP ;), а уже с него - на целевой хост, ключи будут работать, как если бы они лежали на промежуточном сервере. Правильное перенаправление Многие до сих пор используют механизмы вроде MIT Magic Cookies или xhost для запуска удаленного графического приложения на локальном X-сервере. А ведь OpenSSH умеет форвардить пакеты Х-сессии, безусловно, шифруя данные. Прописывай в конфиг клиента (ssh_config) строчку «ForwardX11 yes», логинься на удаленную машину и запускай xterm, который появится на твоем экране как родной :). Также при помощи ssh можно сделать простейший криптотуннель для clear-text протокола, например pop3. Тебе не понадобятся сторонние утилиты вроде Stunnel. Представь, что тебе надо снять почту с твоего сервера на работе, но не хочется использовать pop3-протокол в чистом виде, чтобы твой пароль не отснифали. Нет нужды заморачиваться с pop3 over TLS, у тебя же есть ssh-доступ к серверу. Запускай на локальной машине |