Как стать автором
Поиск
Написать публикацию
Обновить

SSH для частого использования

Время на прочтение2 мин
Количество просмотров69K
Наверное, многие из читающих «Linux для всех» пользуются SSH. Я, например, администрирую большое количество UNIX-систем, и, чтобы быстро получить доступ к нужной машине, приходится использовать возможности протокола на уровне, отличном от примитивного.

Во-первых, надо отучить себя набирать пароль каждый раз. Скорее всего, многие в курсе, но на всякий случай: есть хитрая система т.н. SSH-ключей. Инструкция:
1. ssh-keygen -t dsa — тут надо будет уточнить пути к файлам и passphrase. Второе рекомендуется в целях безопасности, вводить часто не придется. У вас появятся два файла: ~/.ssh/id_dsa и ~/.ssh/id_dsa.pub. Первый из них — ваш секретный ключ, никому его не показывайте! Второй — публичный, который полагается класть на удаленные машины.
2. На удаленной машине создайте папку ~/.ssh с правами 700, а в ней файл authorized_keys с правами 600, в который поместите содержимое файла ~/.ssh/id_dsa.pub (ваш публичный ключ).
3. Можно заходить с первой машины на вторую без пароля. Если не получается — проверьте, нет ли в конфиге sshd удаленной машины строки «PubkeyAuthentication no», а также права на все используемые файлы: на .ssh нужны права 700, на все, что в ней — 600.
Во-вторых, изучаем ssh-agent. Он позволяет вводить Passphrase к ключу только один раз (при подгрузке ключа), а не при каждом логине. Плюс еще некоторые бонусы.
1. Удостоверяемся, что запущен ssh-agent: «ps -C ssh-agent». Если нет — запустите через него терминал, например «ssh-agent roxterm»
2. Подгружаем ключ. «ssh-add ~/.ssh/id_dsa», должно ответить, что ключ добавлен. Note: здесть имя файла необходимо указывать, только если оно отличается от дефолтного.
3. Заходим на вторую машину без пароля.
3.9. Говорят, что на OpenBSD надо выставить переменную указывающую на SSH_AUTH_SOCK (что бы это ни значило :) ), иначе агент-форвардинг не работает.
4. Уходим со второй машины и заходим обратно, отдав параметр -A команде ssh. После этого без пароля заходим на третью машину, на которой уже настроена авторизация по ключам. Думаем «ЫЫЫ, прикольно!», ибо на второй-то машине приватных ключей нет!
В-третьих, забываем про флаг -A, поскольку в файле ~/.ssh/config (права 600) пишем строку «ForwardAgent yes»
Если все ваши похождения по SSH заканчиваются на машинах, досягаемых в один прыжок, дальше можно не читать. Для случаев, когда имеется точка входа в сеть администрируемых машин (или даже цепочка из них), рекомендую дочитать.
В-четвертых, настраиваем ssh-proxy.
Ситуация: У меня есть сервер alpha, имеющий адрес alpha.pupkin.net, а также сервер beta с адресом 192.168.1.17, находящийся в сети, доступной с alpha, но недоступной с моей тачки. Причем на локальной машине мой юзер называется david, а на всех остальных — v.pupkin. Я пишу в ~/.ssh/config следующую уличную магию:
Host *
ForwardAgent yes

Host alpha
HostName alpha.pupkin.net
User v.pupkin

Host beta
HostName 192.168.1.17
User v.pupkin
ProxyCommand ssh alpha nc %h %p

Host *.pup
User v.pupkin
ProxyCommand ssh beta nc %h %p

Что происходит: Я дал алиасы машинам alpha и beta, хожу на alpha под правильным юзером по правильному адресу, написав в консоли всего лишь «ssh alpha». Кроме того, набрав на локальной тачке «ssh beta», я попадаю на beta через alpha, для этого в качестве proxy я использую netcat.
Бонус: если на beta доступна сеть с поднятым DNS, в котором есть домен .pup, я автоматически хожу на тачки в этом домене через beta.

UPD: Перенес в «Linux для всех»
Теги:
Хабы:
Всего голосов 155: ↑143 и ↓12+131
Комментарии120

Публикации

Ближайшие события