Так, по скольку на блог валит редирект со старого блога по данным кейвордам, напишу ка я данное хауту дабы не разочаровывать юзеров
Итак, вы взялись за сисадминство. Число обслуживаемых хостов растет, у всех есть пароли доступа и эти пароли уже заполнили всю планету…
Отныне скажем паролям НЕТ
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 загружает ключи, либо они указываются в настройках сессиий.
Не согласен. Основная функциональность агента, которой я пользуюсь:
1. Быстрый доступ к списку хостов
2. Он запоминает пароль ключа на время запуска.
pgagent запоминает не пароль а сам ключ, он хранит его в памяти в расшифрованном виде, чтобы локальные ssh клиенты могли им быстро воспользоваться.
chmod 700 .ssh
Спасибо, всё разжовано.
Все доступно. Завтра на работе пойду по этому мануалу.
ешкин кот, да не асинхронное шифрование, а – асимметричное!
Ничего не понятно, что вы предлагаете? Свое го рода мастер паролей. «где-то в недрах асинхронного шифрования» – вы вдумайтесь в смысл этой фразы. Вам, стихи надо писать, а не мануалы
ИМХО
Статья на пятёрочку, но гораздо проще генерить и прописывать ключи автоматом.
Скачиваем с http://PuTTY.me генератор RSA/DSA ключей. Генерируем, сохраняем. Запускаем скрипт и все автоматом настраивается. При закрытом доступе к Programm Files могут возникнуть проблемы правда.
Забыл, PuTTY прописывает свои настройки в реестре винды. Либо придется вручную править, либо искать в сети скрипты
имхо – для того чтобы въехать в курс дела, статься больше чем подходит. Конечно есть куча неточностей и косяков, но для ознакомления и когда «срочно горит» она подходит.
Спасибо! Особенно за описание конвертации ключа в формат Open SSH. Обычно про это все как-то забывают при описании.
А можно добавить «Авторизация по публичному ключу UNIX-WINDOWS»?
Именно в эту сторону работать не хочет
Использую OpenSSH for Windows v.3.8.1p1-1.
Просит, сволочь, пароль
Очень доходчиво. Спасибо!