Авторизация по публичному ключу
Так, по скольку на блог валит редирект со старого блога по данным кейвордам, напишу ка я данное хауту дабы не разочаровывать юзеров
Итак, вы взялись за сисадминство. Число обслуживаемых хостов растет, у всех есть пароли доступа и эти пароли уже заполнили всю планету…
Отныне скажем паролям НЕТ
SSH имеет гораздо удобное и секюрное средство авторизации.
Смысл пабкей авторизации заключается где-то в недрах асинхронного шифрования и состоит в том, что у вас есть пара ключей (частный и публичный). Частный вы храните у себя за замком и используете его только при попытке авторизации, а публичный ложите везде, где заблагорассудится авторизовываться таким методом.
Если публичный ключ украдут, ничего страшного не произойдет. Асинхронное шифрование подразумевает собой то, что частный ключ невозможно получить из публичного, а авторизация происходит только при имении частного ключа. Кроме того, частный ключ может быть защищен паролем. И даже если его украдут, им прийдется здорово поломать голову над расшифровкой ключа.
Авторизация по публичному ключу WINDOWS-UNIX
Шаг 1. Генерация пары ключей.
Для начала нужно иметь SSH-клиент. Лично я юзаю Putty. Качать рекомендую полную виндовую установку, т.к. кроме самого клиента там еще куча полезных утилит. Одна из них – PuttyGen – утилитка для работы с ключами. Ею и воспользуемся.
В диалоге выбираем тип ключа “SSH2 – RSA”. Длину ключа ставим 1024 бита. Параноики могут увеличить это значение. Но как правило, 1024 хватает. Там же жмем батон “Generate Key Pair”:
Согласно приглашению 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.




В статье lвтор допустил неточноcть. Если в астройках сессии явно указывается файл с ключем, запускать pgagent не имеет смысла (просто так без ключей). pgagent это эквивалент ssh-agent, он загружает приватный ключ (ключи) и раздает его ssh клиентам (putty) для авторизации. По этому в общем случает “либо-либо”. Либо pgagent загружает ключи, либо они указываются в настройках сессиий.
Комментарий от hostmaster | 17 августа 2008
Не согласен. Основная функциональность агента, которой я пользуюсь:
1. Быстрый доступ к списку хостов
2. Он запоминает пароль ключа на время запуска.
Комментарий от admin | 17 августа 2008
pgagent запоминает не пароль а сам ключ, он хранит его в памяти в расшифрованном виде, чтобы локальные ssh клиенты могли им быстро воспользоваться.
Комментарий от hostmaster | 18 августа 2008
chmod 700 .ssh
Спасибо, всё разжовано.
Комментарий от Omi | 18 декабря 2008
[...] Сразу имеет смысл настроить беспарольный вход по SSH: [...]
Пингбек от Виртуализация при помощи VirtualBox « Урановые рудники | 28 января 2009
Все доступно. Завтра на работе пойду по этому мануалу.
Комментарий от Хел | 1 марта 2009