Так, по скольку на блог валит редирект со старого блога по данным кейвордам, напишу ка я данное хауту дабы не разочаровывать юзеров :)

Итак, вы взялись за сисадминство. Число обслуживаемых хостов растет, у всех есть пароли доступа и эти пароли уже заполнили всю планету…

Отныне скажем паролям НЕТ :) SSH имеет гораздо удобное и секюрное средство авторизации.

Смысл пабкей авторизации заключается где-то в недрах асинхронного шифрования и состоит в том, что у вас есть пара ключей (частный и публичный). Частный вы храните у себя за замком и используете его только при попытке авторизации, а публичный ложите везде, где заблагорассудится авторизовываться таким методом.

Если публичный ключ украдут, ничего страшного не произойдет. Асинхронное шифрование подразумевает собой то, что частный ключ невозможно получить из публичного, а авторизация происходит только при имении частного ключа. Кроме того, частный ключ может быть защищен паролем. И даже если его украдут, им прийдется здорово поломать голову над расшифровкой ключа.

Авторизация по публичному ключу WINDOWS-UNIX

Шаг 1. Генерация пары ключей.

Для начала нужно иметь SSH-клиент. Лично я юзаю Putty. Качать рекомендую полную виндовую установку, т.к. кроме самого клиента там еще куча полезных утилит. Одна из них – PuttyGen – утилитка для работы с ключами. Ею и воспользуемся.

В диалоге выбираем тип ключа «SSH2 – RSA». Длину ключа ставим 1024 бита. Параноики могут увеличить это значение. Но как правило, 1024 хватает. Там же жмем батон «Generate Key Pair»:

Генерация ключей putty

Генерация ключей putty

Согласно приглашению Putty, ездим мышей по экрану пока полоса прогресса не доберется до правого края.

Поздравляю, у вас есть свой ключ теперь )

Сгенерированный ключ

Сгенерированный ключ

Но это еще не все. Категорически рекомендую указать комментарий ключа (Key comment) – к примеру, ваш ник и пароль ключа. Пароль будет запрашиваться при каждой попытке применить ключ. Не рекомендую сюда ставить часто-применяемые простые пароли. Комментарий же пригодится когда на хосте прописано 10 авторизованных ключей и попробуй разбери кому чей принадлежит.

Теперь сохраним публичный и частный ключи где то на супер-мега-секретном диске Private Disk Light. Бекап диска не забыть закатать на болванку и спрятать под бабушке в комод. Для этого поочередно нажать батоны

«Save public key» => Z:\my keys\id_rsa.pub
«Save private key» => Z:\my keys\id_rsa.ppk

Файло id_rsa.pub является публичным ключем. Его можно смело выкладывать где то в инете, чтобы иметь быстрый доступ к нему. Файло id_rsa.ppk является приватным ключем, лучше бы его посторонние глаза не видели.

Далее, запускаем утилитку PageAnt из комплекта Putty. Она свернется в трей синеньким монитором с шапкой. Жмем правой кнопкой на ней «Add key«. Укажем путь к нашему супер секретному «id_rsa.ppk«. Спросит пароль ключа. После этого она «запомнит» ключ у себя и, пока она висит в трее, не нужно  будет каждый раз вводить пароль ключа.

Настройка Putty на использование пубкей авторизации

Нужно прописать две вещи. Первая – это имя удаленного юзера:

В принципе это просто для удобства, чтобы каждый раз не спрашивало под кем коннектиться.

Второе, это явное указание пути к приватному ключу:

Ну все, теперь можно сохранять сессию. Даже можно сохранить такой вариант как дефолтный.

Теперь нужно удаленному серверу передать свой публичный ключ. См. ниже.

Далее правой кнопкой на PageAnt -> выбрать сервер, коннект. Все работает без паролей (если в PageAnt добавлен ключ).

Настройка SSHD сервера для авторизации по публичному ключу.

Обычно стандартный конфиг современных демонов OpenSSH не нуждается в модификации. Но на всякий случай нужно проверить, включена ли RSA авторизация:

/etc/ssh/sshd_config:
PubkeyAuthentication yes
AuthorizedKeysFile     .ssh/authorized_keys

Теперь нам нужно сообщить серверу, что наш ключ можно принимать для авторизации. Для этого в хомяке нужного пользователя нужно создать (если нет) каталог «.ssh«. и в нем создать пустой файл «authorized_keys«.

Все что осталось – добавить наш публичный ключ в файл «~/.ssh/authorized_keys«.

Если у вас ключ, сгенерированный unix-утилиткой «ssh-keygen«, то над содержимое вашего публичного ключа «~/.ssh/id_rsa.pub«  (на машине-клиенте) добавить к содержимому «~/.ssh/authorized_keys» (на машине-сервере, ~ означает хомяк пользователя, под которым будете логиниться).

Если у вас ключ, сгенерированный PuttyGen, то его нужно еще преобразовать. На машине-сервере выполняем:

# cd /root
Если нет директории .ssh:
# mkdir .ssh
# chmod .ssh 700
качаем публичный ключ из веба:
# wget http://coolsite.com/id_rsa.pub
конвертируем ключ в формат openssh:
# ssh-keygen -i -f id_rsa.pub >> .ssh/authorized_keys

Не забываем поставить на .ssh и .ssh/authorized_keys корректного овнера. Права – 700, 600 соответственно.

Все, можно коннектиться.

Авторизация по публичному ключу UNIX-UNIX

Генерация пары ключей в юниксе куда проще. Нужно из под юзера, под которым будет открывать ssh сессии выполнить:

Генерация RSA ключа 1024 бита с каментом «super admin»
# ssh-keygen -t rsa -b 1024 -C ‘super admin’

На вопрос о пути сохранения ключа лучше ответить «Enter» :)

На вопрос о пароле ключа лучше ввести пароль. Рекомендации выше. Сгенерированная пара будет лежать в:

~/.ssh/id_rsa – частный ключ
~/.ssh/id_rsa.pub – публичный ключ

Публичный ключ можно копировать на сервера назначения как описано выше. Частный ключ будет автоматически использован в любом соединении с удаленным хостом, где вы прописали свой публичный ключ.

Соответственно, чтобы настроить взаимную безпарольную авторизацию двух UNIX хостов, необходимо на обоих сгенрировать пару ключей без пароля, крест-накрест положить содержимое id_rsa.pub на другой хост в authorized_keys.