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

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


Выделенные сервера от $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 | Безопасность, Очумелые ручки | 6 comments

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

  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

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