SSH авторизация в Linux по сертификату / ключу Ещё одна мастхев практика - доступ к линукс серверам через SSH по ключу / сертификату, чтобы исключить возможность подбора пароля и сократить количество лишних движений в ежедневной рутине.
Настройка Linux для работы с SSHОбычно по-умолчанию всё и так включено и работает, убедитесь что:
Служба/демон/сервис ssh/sshd включена и работает
Указанный порт в файле /etc/ssh/sshd_config разрешен в фаерволе
Если летит sshd shuts down with “No supported key exchange algorithms” error, ставим UsePAM yes в /etc/ssh/
sshd_config и после этого sudo systemctl restart sshd
Создаем папку, где будут храниться ПУБЛИЧНЫЕ части ключей:
Потом мы запишем содержимое публичной части ключа в authorized_keys.
Генерируем пару SSHПосле генерации ключей по-умолчанию будут создано 2 файла:
id_rsa - приватная часть ключа, которой ни с кем нельзя делиться
id_rsa.pub - публичная часть ключа, содержимое которой нужно перенести на удаленный сервер
Генерируем пару SSH ключей на Windows 10RSA Ключи с длиной 2048:
RSA Ключи с длиной 4096:
ED25519 Ключи (топовый на данный момент формат, взамен RSA
С указанием пути куда сохранить пару ключей:
ВАЖНО: Удаляем у сгенеренного паблик ключа группу ВСЕ и себе даём Полные права.
Ярлык для SSH подключения в Windows 10
ПКМ по пустому месту на рабочем столе > Создать > Ярлык > Расположение:
Генерируем пару SSH ключей на LinuxRSA Ключи с длиной 2048:
RSA Ключи с длиной 4096:
ED25519 Ключи (топовый на данный момент формат, взамен RSA
Копируем публичную часть ключа на другой хост с использованием SSH-Copy-ID
Копируем публичную часть ключа на другой хост с использованием SSHЕсли каким-то магическим образом SSH-Copy-ID нет, используем OneLiner и делаем тоже самое через SSH:
Отключение SSH авторизации по паролюВ файле /etc/ssh/sshd_config:
На компьютерах под управлением Ubuntu или Debian можно использовать следующую команду:
На компьютерах под управлением CentOS/Fedora этот демон носит имя sshd:
Остальное по SSHЧтобы вести лог подключений к SSH необходимо в файле /etc/ssh/sshd_config выставить значение LogLevel VERBOSE и перезапустить службу SSH service ssh restart
Траблшутинг SSHНа удаленном сервере сервере:
Разрешаем в фаерволе iptables тестовый порт 2222
Запускаем отдельный экземпляр SSH на 2222 порту и пробуем конектиться
/usr/sbin/sshd -d -p 2222
На клиенте в ярлыке или команде SSH можно добавить -v для verbose и читать что там не так + лог SSH на самом сервере.
👉
@sys_adminos