Ключ надёжнее пароля: его нельзя подобрать перебором, и он не передаётся на сервер при входе. Ключ состоит из двух файлов: закрытый остаётся у вас, публичный кладётся на сервер. Вход по паролю после настройки ключа лучше отключить.
Создайте ключ на своём компьютере
Команда одинакова для macOS, Linux и Windows (PowerShell):
$ ssh-keygen -t ed25519 -C "you@example.com"Нажмите Enter, чтобы сохранить ключ в стандартное место, и задайте фразу-пароль — она защитит ключ, если файл украдут. Публичная часть ключа окажется в файле ~/.ssh/id_ed25519.pub.
Добавьте ключ на сервер
$ ssh-copy-id root@203.0.113.10type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"Ключи можно хранить и в панели: «Настройки → SSH-ключи». Панель покажет команду, которая добавит все ваши ключи на сервер без дублей, — подробнее в статье «SSH-ключи в панели».
Проверьте вход по ключу
Откройте новое окно терминала и подключитесь. Пароль сервера спрашиваться не должен (только фраза-пароль ключа, если вы её задали):
$ ssh root@203.0.113.10Чтобы не вводить фразу-пароль каждый раз, добавьте ключ в агент: на macOS и Linux — ssh-add, в Windows включите службу «OpenSSH Authentication Agent» и выполните ssh-add там же.
Отключите вход по паролю
Создайте файл с настройками, который будет иметь приоритет над остальными:
$ nano /etc/ssh/sshd_config.d/00-hardening.confPasswordAuthentication noPermitRootLogin prohibit-passwordПроверьте синтаксис и перезапустите SSH:
$ sshd -t && systemctl restart sshПодробнее о других полезных настройках — в статье «Защита SSH».
Частые ошибки
- Сервер всё равно спрашивает пароль. Проверьте права:
~/.ssh— 700,authorized_keys— 600, владелец — тот же пользователь. При неверных правах SSH игнорирует ключи. - Ключ добавлен не тому пользователю: у root файл лежит в /root/.ssh, у остальных — в /home/имя/.ssh.
- В authorized_keys ключ разбит на несколько строк. Каждый ключ — ровно одна строка.
- Закрытый ключ (без .pub) отправили на сервер или в чат. Такой ключ считается скомпрометированным — создайте новый.