Логин по SSH с помощью сертификатов!
Оглавление:
- Предисловие
- Windows (Создание ключа и перенос его на сервер)
- Windows (Импорт в PuTTY)
- XShell
- Linux
- Отключаем аутентификацию по паролю на сервере
Предисловие:
Главный вопрос - зачем оно мне надо?
- Так явно безопаснее, я понимаю что у большинства пароли не из трех символов, но согласитесь - подобрать значение приватного ключа, почти анрил и если мы говорим о рекомендуемых практиках для подключения через SSH - сделать пару ключей и отключить пароли это одна из лучших вещей что вы можете сделать!
- Если вы доверяете тому месту где вы храните свой приватный ключ и немного в душе авантюрист, то вы можете аутентифицироваться на всех ваших серверах с помощью одного ключа, то-есть вы просто копируете на любой новый сервер свой публичный ключ и вот в один простой консольный кульбит у вас безопасная аутентификация одним ключом на всем вашем парке серверов!!
Вы окажите себе огромную услугу если побеспокоитесь о безопасности своего подключения заранее, до того как станете крутым дядей валидатором!)
Windows (Создание ключа и перенос его на сервер)
Открываем консоль PowerShell(ищется во встроенном поиске приложений)
Или можно использовать Windows Terminal который в моей практике хорошо зарекомендовал себя для работы с удаленными серверами
И туда пишем команду с помощью которой создадим ключевую пару:
ssh-keygen
Нам предлагают ввести путь по которому мы хотим сохранить ключ. Нажимаем Enter что-бы сохранить в папку по умолчанию)
Следом мы можем задать пароль для нашей ключевой пары, это мы делаем на свое усмотрение! (но лучше задать тогда даже если файл утечет из ваших мозолистых рук, человек обломит зубы о пароль)
Спустя какое-то время команда отработает
Дальше нам надо скопировать наш ключ на сервер:
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh USERPROFILE@IP-ADDRESS "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Мы меняем USERPROFILE@IP-ADDRESS на свою пару имени пользователя и IP адреса сервера к которому мы подключаемся по SSH!
После этого вводите ваш пароль от сервера и ВУАЛЯ, ключ скопирован)
Если вы используете для подключения Windows Terminal или PowerShell - то переходите к отключению аутентификации по паролю, а любое последующее подключение можно выполнять указывая пароль от ключевой пары, если вы его задавали, или не указывая ничего)
Windows (Импорт в PuTTY)
Открываем PuTTYgen - он устанавливается вместе с PuTTY.
Наш ключ находится по пути C:\Users\ИМЯ-ПОЛЬЗОВАТЕЛЯ\.ssh и называется id_rsa
Если вы задавали пароль при создании ключа то вас попросят его ввести.
Нажимаем Save Private key и сохраняем его по удобному нам пути.
Открываем PuTTY и в левом меню идем по пути:
В самом низу меню настройки будет пункт:
Здесь мы выбираем файл который сохранили с помощью PuTTYgen.
Теперь логин будет выполнятся с помощью сертификата!
Если все работает - самое время отключить аутентификацию по паролю на сервере)
XShell
Что-бы импортировать ключ в вашу готовую сессию:
Открываем параметры далее выбираем Authentication.
Ставим галку на Public Key, выбираем его и нажимаем Setup
В открывшемся меню выбираем файл id_rsa который мы сгенерировали в первой части гайда.
Если вы задавали пароль для вашей ключевой пары то вас попросят его ввести)
Выбираем импортированный ключ нажимаем ОК:
В этом меню дублируем пароль для вашей ключевой пары если вы его задавали:
После этого можете снять галочку с пункта Password)
Так как ключ мы с вами импортировали для любого другого подключения мы сможем просто выбрать наш сертификат из списка импортированных)
Вы большой молодец и можете отключить аутентификацию по паролю на сервере!
Linux
Хотя, заядлые Линуксоиды меня самого поучат...)
Нам предлагают ввести путь по которому мы хотим сохранить ключ. Нажимаем Enter что-бы сохранить в папку по умолчанию)
Следом мы можем задать пароль для нашей ключевой пары, это мы делаем на свое усмотрение! (но лучше задать тогда даже если файл утечет из ваших мозолистых рук, человек обломит зубы о пароль)
Спустя какое-то время команда отработает
Следом мы копируем нашу ключевую пару на удаленный сервер:
ssh-copy-id -i ~/.ssh/id_rsa ИМЯ-ПОЛЬЗОВАТЕЛЯ@IP-СЕРВЕРА
Отключаем аутентификацию по паролю на сервере
Убеждаемся в том что логин по сертификату у вас работает, и сервер просит только пароль от ключевой пары при логине!
Открываем с помощью вашего любимого текстового редактора файл /etc/ssh/sshd_config
Для nano команда выглядит так:
sudo nano /etc/ssh/sshd_config
В этом файле нам нужно увидеть:
ChallengeResponseAuthentication no PasswordAuthentication no UsePAM no
Если вы видите что один из параметров уже есть в файле - просто поменяйте его значение на no!
Сохраняем изменения комбинацией клавиш Ctrl + S
Теперь нам остается только перезапустить сервер ssh на машине, что мы можем сделать с помощью команды:
Вот и мы и отключили аутентификацию через пароль на нашем сервере)
Храните свой файл с ключами как зеницу ока, не забывайте свой пароль от ключевой пары и до встречи в следующих гайдах!)
Пожелания, комментарии и критика принимаются в PM на Telegram: @p_agony