В прошлой статье мы установили ОС Debian 12.9.0, сегодня расскажу вам, как получить доступ по SSH с использование ключа и так приступим.
Для начала нам нужно скачать клиенты к нашему серверу, в качестве клиента SFTP буду использовать WinSCP (скачать), в качестве терминала буду использовать Putty (скачать), скачайте и установите, подходящие для вашей операционной системы, установочные файлы.
Для начала нам нужно запустить сам сервер Debian и войти под учётной записью Root, далее прописать команду, чтобы узнать наш IP адрес:
ip a

В моём случае интерфейс eth0 с IP адресом 10.0.0.99, запоминаем адрес, далее подключаемся через WinSCP, выбираем протокол передачи SFTP, прописываем адрес сервера, порт по умолчанию 22, буду подключаться под учётной записью ROOT

Далее жмём принять

И что мы видим ? Видим, что доступ запрещён

Всё на этом статью можно заканчивать, ничего не вышло )))) Но не тут то было)))
В данном случае, в целях безопасности отключен доступ через Root пользователя, для этого нужно в конфигурации сервиса SSH включить его ( это не очень безопасно, но я пользуюсь один сервером и принимаю все риски, мне так удобнее работать под Root ).
Так как сейчас доступ по паролю запрещён, нужно его включить, нужно перейти в саму систему Debian и отредактировать файл конфигурации
Воспользуемся встроенным редактором Nano, мне он больше нравится чем Vim
Файл настроек SSH сервера находится по пути
/etc/ssh/sshd_config
Чтобы открыть в редакторе этот файл, напишите в консоли сервера Debian команду:
nano /etc/ssh/sshd_config
Ищем строчку PermitRoogLogin

Раскомментируем её (убираем # перед переменной) и в значении пишем Yes

Для выхода из редактора nano жмём Ctrl+X, вводим Y для сохранения и жмём Enter, для того чтобы изменения вступили в силу нужно перезагрузить сервер SSH, команда для перезапуска:
service sshd restart

Открывает WinSCP и пробуем подключиться, теперь мы вошли по SFTP и видим список файлов

По умолчанию скрытые файлы не отображаются в WinSCP, заходим в настройки/панели и ставим галочку Показывать скрытые файлы, не закрываем WinSCP нам нужно будет добавить ключи.

Следующим шагом будет генерация ключа, по которому мы будет подключаться по SSH и SFTP соответственно, для этого нам понадобится Putty ( Puttygen ), запускаем и жмём Generate

Далее водим мышкой внутри окна, пока полоса не дойдёт до конца и не появится готовый ключ

Тут уже два варианта, вы можете использовать ключ как ключ от входной двери, а можно сделать дополнительную проверку по паролю ( вдруг у вас украдут ключ и смогут войти с ключом в сервер ?), рекомендую задать пароль, при каждой авторизации по ключу будет запрашивать пароль, для этого в поле Key passphrase укажем пароль для ключа и ниже повторяем его в поле Confirm, поле Key comment – будет показано при авторизации ключом, можете написать, что пожелаете или оставить как есть.
Указываем пароль для ключа, поле подтверждения пароля и сохраняем ключи, у вас будут два ключа – один приватный ( хранится у клиента ) и публичный ( хранится на сервере )

После сохранения у вас будут два файла в папке, не закрываем PuTTYgen он нам ещё нужен будет.

Публичные ключи хранятся у каждого пользователя по пути
Папка пользователя/.ssh/authorized_keys
в моём случае для Root
Заходим в WinSCP, открываем путь /root/.ssh/ и создаём файл authorized_keys


Теперь нам нужно вписать публичный ключ, копируем его из PuTTYgen и вставляем в созданный файл authorized_keys

Жмём сохранить файл в WinSCP, теперь можно закрыть окно редактора файла и Puttygen

Теперь нужно изменить права доступа на файл ключа, ниже список типичных настроек прав доступа:

Смотрим в WinSCP права доступа, посмотрев в свойствах публичного ключа

С ключами разобрались, ключ действует в рамках одного пользователя, можно использовать один и тот же ключ для для всех пользователей, но это очень плохая идея и не рекомендую так делать.
Теперь нам нужно обязательно залатать дыры, которые мы сделали, разрешив доступ от Root по паролю, для этого нам нужно отредактировать снова файл SSHD_CONFIG, для простоты буду использовать тот же WinSCP, переходим в папку /etc/ssh/

Как вы помните, мы отредактировали PermitRootLogin в значение YES, она разрешает подключаться от самого главного пользователя Root, многие отключают её, но я на свой страх и риск оставляю как есть в YES, ведь уже буду использовать ключ и подобрать его будет гораздо сложнее. (в общем, можно закомментировать её перед значением поставить # ), но для этого нужно другого пользователя создавать и пользоваться SUDO, но это другая уже другая история 🙂
В общем теперь нам нужно найти строчку
#PasswordAuthentication yes
Раскомментировать её и поменять значение на NO, должно быть как на скрине ниже, тем самым мы запрещаем авторизацию по паролю, мы будем использовать ключ.

Сохраняем и закрываем файл, далее нам нужно перезапустить службу SSH сервера, можно это сделать в самом WinSCP сверху чёрный значок со знаком >

Выполним знакомую команду
service sshd restart

После этого сервер SSH перезапустится, подключаемся снова, через WinSCP и видим

Ругается, что ключа нет, авторизация по паролю не поддерживается, теперь нужно настроить подключение по ключу, заходим в настройки соединения

И указываем наш приватный ключ, жмём ОК и Сохранить

Теперь при входе просит пароль от созданного нами ключа

Вводим пароль от ключа, подключение успешно, видим файлы

Основная часть сделана, поздравляю вас 🙂
Теперь чтобы подключиться к консоли через SSH нам нужна программа Putty

Прописываем адрес сервера, в Connections / SSH / Auth / Credentials указываем приватный ключ

Теперь переходим в раздел Sessions прописываем имя соединения в Saved Sessions и жмём сохранить

Жмём Open, при запросе жмём принять, далее вводим пароль от приватного ключа, вот и всё теперь вы в консоли сервера.

PS:
При бездействии ваше соединение может разрываться, чтобы этого не было нужно в файле SSHD_CONFIG добавить пару строчек, чтобы сервер проверят соединение, каждые 60 секунд ( ClientAliveInterval ) будет проверять, если в течении 60 проверок ( ClientAliveCountMax ) не проявит активность, то соединение закроется
ClientAliveInterval 60
ClientAliveCountMax 60
Конечно, статью описал с использованием Windows, что не совсем корректно, все манипуляции можно делать в терминале самого Debian, но думаю найдётся кому статья пригодится, спасибо что дочитали до конца 🙂