SSH авторизация по сертификатам — способ повысить безопасность ваших серверов. Потому что необходимость вводить пароль — одно из наиболее уязвимых мест любой системы безопасности. Как с этим бороться? Отключить парольную авторизацию! Вместо неё мы будем использовать ssh авторизацию по сертификатам. Система при авторизации будет ожидать доверенный сертификат и без него дальнейшее взаимодействие с ней будет невозможно. Злоумышленнику, для доступа к серверу сначала нужно будет завладеть этим сертификатом.
Так же авторизация без пароля необходима при настройке доверительных отношений между серверами. Например при репликации SysVol. Да и в принципе, валидная авторизация без постоянного ввода логина и пароля на мой взгляд упрощает жизнь.
Putty — SSH авторизация по сертификатам
Генерируем ключи с помощью ssh-keygen
Для начала необходимо сгенерировать ключи с помощью команды
ssh-keygen
Выполнять данную команду надо без sudo и под тем пользователем, для которого вам необходимо реализовать авторизацию через ssh без пароля. Sudo можно использовать если настраивается доступ для рута. Но в этом случае я бы использовал sudo su.
ssh-keygen предложит вам папку по умолчанию, в которую сохранит ключи. В обычной ситуации стоит оставить этот путь.
Когда ssh-keygen предложит ввести пароль для файла ключей, поле необходимо оставить пустым. Введение пароля хоть и увеличит безопасность и без того надёжного способа авторизации, придётся вводить этот пароль каждый раз. Это излишняя мера для авторизации внутри сети. Но в случае если SSH порт сервера доступен из публичной сети, этот способ может оказаться очень кстати.
В конце ssh-keygen покажет куда сохранены открытый и закрытый ключи, отпечаток ключа и рандомную картинку ключа.
Теперь необходимо установить открытый ключ на наш сервер. Используем для этого ssh-copy-id
Устанавливаем ключи с помощью ssh-copy-id
Утилита используемая для доставки ключей на удалённые хосты. Можно применить её на текущий хост указав localhost вместо имени или адреса сервера к которому подключаемся
ssh-copy-id adminguideru@localhost
Если ssh отпечаток системе не знаком, она попросит подтвердить намерения подключения. Пишем yes.
Когда утилита запросит пароль от учётной записи в которую мы пытаемся скопировать ключи, вводим его.
Если всё прошло успешно, мы увидим предложение попробовать авторизоваться в системе по ключу с помощью команды
ssh adminguideru@localhost
Если авторизация прошла успешно, мы увидим как запустится консоль сервера. Так как в данном случае мы подключаемся с текущего сервера на него же, какого-либо практического смысла, кроме как для теста, это действие не имеет.. Просто введите exit чтобы разорвать данное «виртуальное» ssh подключение и вывалиться в свою исконную сессию.
Экспортируем закрытый ключ
cat /home/adminguideru/.ssh/id_rsa
Данная команда выведет на экран содержимое файла id_rsa содержащего закрытый ключ. Его целиком нужно скопировать в текстовичёк и сохранить на диске.
Импортируем закрытый ключ в PuTTY
PuTTY — прекрасный и наверное самый лучший SSH клиент для масдая. Который работает без нареканий и обладает всем необходимым функционалом. Бесплатный. Всё в нём хорошо. Но именно на этом поприще они решили отличиться и добавить чуть-чуть геморроя в процесс.
Вместе с PuTTY поставляется утилита PuTTYgen (PuTTY Key Generator).
- Запускаем PuTTYgen
- Нажимаем кнопку Load
- Тип файлов выбираем All Files, выбираем свой текстовичок
- Видим сообщение об успешном импорте ключа. При желании можно указать комментарий ( Key comment)
- Жмём кнопку Save private key, соглашаемся с отсутствием пароля у ключа
SSH авторизация по сертификатам- Настраиваем подключение
Запускаем Putty, в окне Session указываем адрес сервера к которому будем подключаться с помощью сертификата
Переходим в Connection -> SSH -> Auth и нажав кнопку Browse выбираем свой только что созданный файл с закрытым ключём.
После нажатия кнопки Open система попросит вас ввести логин пользователя под которым мы пытаемся авторизоваться.
Чтобы заходить даже без ввода логина, достаточно указать этот логин в Connection->Data в поле Auto-login username
После этого двойным нажатием на сохранённую в PuTTY сессию вы будете в одно мгновение залетать в консоль. Ввод пароля теперь будет требоваться только для работы с sudo
SSH авторизация по сертификатам — Отключаем вход по паролю
Если вы 10 раз всё проверили и убедились что вас пускает по сертификату, остаётся отключить возможность авторизации на сервере с помощью пароля. Открываем на редактирование конфиг sshd
sudo nano /etc/ssh/sshd_config
Раскомментируем строку PasswordAuthentication установив значение на no
PasswordAuthentication no
Перезапускаем ssh и sshd
systemctl restart ssh sshd
Ещё больше интересного контента в моём блоге в Zen и на моём канале YouTube. Подписывайтесь на канал, ставьте лайки, делайте репосты, это поможет развитию контента проекта AdminGuide.Ru
3 комментария
Здравствуйте.
Заранее прошу прощения, не знал куда написать просто.
Вопрос по возможным темам.
Планируется ли что то по теме Andible
И вопрос по нескольким HASP ключам на одном сервере, возможно ли на одном сервере несколько ключей, если да то как?
По Ansible да планируется, но не раньше мая. Техподдержка 1С когда я задал подобный вопрос сказала что нет. Невозможно. Менеджер лицензий будет видеть только 1 хасп одновременно. Так что теоретически проблему можно решить только установив на физическую машину гипервизор, создав внутри несколько ОС, каждая из которых будет иметь свой хасп сервер, и в каждую из которых будет прокинут ключ. Насколько я знаю, VMWare Workstation Pro for Linux должна без проблем давать пробрасывать USB девайсы в виртмашины. C esxi уже могут быть проблемы но я постараюсь в феврале добраться до своего физического стенда потестить на простых флешках. То есть хаспу необходимо сохранить принцип «Одна ОСь — один ключ».
А писать можно куда угодно, я в среднем минимум 1 раз в сутки просматриваю все площадки (лучшее в дзен, для рейтинга :))
Здравствуйте! столкнулся с проблемой что Putty не может использовать закрытый ключ из-за версии PPK. Unable to load key file «D:\reg_certificates\privatekey.ppk» (PuTTY key format too new)
нашел решение вот в этой статье
ccportal.ims.ac.jp/en/node/2914.