Skip to content

This article is available in Russian. An English version is on the way.Open the Russian page

SSH-ключи вместо пароля

Создать ключ, добавить его на сервер и отключить вход по паролю.

Level
Beginner
Reading time
2 min read
Updated
Contents
  1. Создайте ключ на своём компьютере
  2. Добавьте ключ на сервер
  3. Проверьте вход по ключу
  4. Отключите вход по паролю
  5. Частые ошибки

Ключ надёжнее пароля: его нельзя подобрать перебором, и он не передаётся на сервер при входе. Ключ состоит из двух файлов: закрытый остаётся у вас, публичный кладётся на сервер. Вход по паролю после настройки ключа лучше отключить.

Создайте ключ на своём компьютере

Команда одинакова для macOS, Linux и Windows (PowerShell):

bash
$ ssh-keygen -t ed25519 -C "you@example.com"

Нажмите Enter, чтобы сохранить ключ в стандартное место, и задайте фразу-пароль — она защитит ключ, если файл украдут. Публичная часть ключа окажется в файле ~/.ssh/id_ed25519.pub.

Добавьте ключ на сервер

macOS и Linux
$ ssh-copy-id root@203.0.113.10
Windows (PowerShell)
type $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-ключи в панели».

Проверьте вход по ключу

Откройте новое окно терминала и подключитесь. Пароль сервера спрашиваться не должен (только фраза-пароль ключа, если вы её задали):

bash
$ ssh root@203.0.113.10

Чтобы не вводить фразу-пароль каждый раз, добавьте ключ в агент: на macOS и Linux — ssh-add, в Windows включите службу «OpenSSH Authentication Agent» и выполните ssh-add там же.

Отключите вход по паролю

Создайте файл с настройками, который будет иметь приоритет над остальными:

bash
$ nano /etc/ssh/sshd_config.d/00-hardening.conf
ini
PasswordAuthentication noPermitRootLogin prohibit-password

Проверьте синтаксис и перезапустите SSH:

bash
$ sshd -t && systemctl restart ssh

Подробнее о других полезных настройках — в статье «Защита SSH».

Частые ошибки

  • Сервер всё равно спрашивает пароль. Проверьте права: ~/.ssh — 700, authorized_keys — 600, владелец — тот же пользователь. При неверных правах SSH игнорирует ключи.
  • Ключ добавлен не тому пользователю: у root файл лежит в /root/.ssh, у остальных — в /home/имя/.ssh.
  • В authorized_keys ключ разбит на несколько строк. Каждый ключ — ровно одна строка.
  • Закрытый ключ (без .pub) отправили на сервер или в чат. Такой ключ считается скомпрометированным — создайте новый.

Read to the end and the article counts toward your learning progress.

  • SSH-ключ
  • ssh-keygen
  • ed25519
  • authorized_keys
  • вход без пароля

Was this article helpful?