Записки сисадмина

Или помойное ведро идей


Выделенные сервера от $130
VDS/VPS от $20

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

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

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

Отныне скажем паролям НЕТ :) 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.

21.07.2008 Автор admin | Безопасность, Очумелые ручки | 8 comments

Комментарии (8) »

  1. В статье lвтор допустил неточноcть. Если в астройках сессии явно указывается файл с ключем, запускать pgagent не имеет смысла (просто так без ключей). pgagent это эквивалент ssh-agent, он загружает приватный ключ (ключи) и раздает его ssh клиентам (putty) для авторизации. По этому в общем случает «либо-либо». Либо pgagent загружает ключи, либо они указываются в настройках сессиий.

    Комментарий от hostmaster | 17 августа 2008

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

    Комментарий от admin | 17 августа 2008

  3. pgagent запоминает не пароль а сам ключ, он хранит его в памяти в расшифрованном виде, чтобы локальные ssh клиенты могли им быстро воспользоваться.

    Комментарий от hostmaster | 18 августа 2008

  4. chmod 700 .ssh
    Спасибо, всё разжовано.

    Комментарий от Omi | 18 декабря 2008

  5. [...] Сразу имеет смысл настроить беспарольный вход по SSH: [...]

    Пингбек от Виртуализация при помощи VirtualBox « Урановые рудники | 28 января 2009

  6. Все доступно. Завтра на работе пойду по этому мануалу.

    Комментарий от Хел | 1 марта 2009

  7. ешкин кот, да не асинхронное шифрование, а – асимметричное!

    Комментарий от orangeudav | 11 марта 2010

  8. Ничего не понятно, что вы предлагаете? Свое го рода мастер паролей. «где-то в недрах асинхронного шифрования» – вы вдумайтесь в смысл этой фразы. Вам, стихи надо писать, а не мануалы :) ИМХО

    Комментарий от Виталик | 20 марта 2010

Оставить комментарий