Добавить в корзинуПозвонить
Найти в Дзене

Как настроить SSH-ключи для входа без пароля (Linux и Windows)

Всем привет! На связи BFDevel, и сегодня разберём настройку SSH-ключей для входа на сервер без пароля. Если вы до сих пор подключаетесь к серверам через ssh user@host и каждый раз вводите пароль — вы тратите время и оставляете систему уязвимой. Подбор паролей по SSH идёт круглосуточно: боты сканируют интернет и пытаются брутфорсом получить доступ. SSH-ключи решают обе проблемы: вход становится мгновенным, а взлом через подбор пароля — невозможным в принципе. ВНИМАНИЕ! ВСЕ ДЕЙСТВИЯ ВЫ ВЫПОЛНЯЕТЕ НА СВОЙ СТРАХ И РИСК
АВТОР СТАТЬИ НЕ НЕСЁТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВАШИ ДЕЙСТВИЯ/ПОСЛЕДСТВИЯ ВАШИХ ДЕЙСТВИЙ SSH использует асимметричное шифрование. У вас есть два файла: При подключении сервер проверяет, что ваш приватный ключ соответствует сохранённому публичному. Если да — пускает без пароля. Linux / MacOS / Windows 10-11: ssh-keygen -t ed25519 -C "ваш_email@example.com" Алгоритм ed25519 — современный, быстрый и безопасный. Если по какой-то причине нужен старый формат (например, для совмес
Оглавление

Всем привет! На связи BFDevel, и сегодня разберём настройку SSH-ключей для входа на сервер без пароля.

Если вы до сих пор подключаетесь к серверам через ssh user@host и каждый раз вводите пароль — вы тратите время и оставляете систему уязвимой. Подбор паролей по SSH идёт круглосуточно: боты сканируют интернет и пытаются брутфорсом получить доступ. SSH-ключи решают обе проблемы: вход становится мгновенным, а взлом через подбор пароля — невозможным в принципе.

ВНИМАНИЕ! ВСЕ ДЕЙСТВИЯ ВЫ ВЫПОЛНЯЕТЕ НА СВОЙ СТРАХ И РИСК
АВТОР СТАТЬИ НЕ НЕСЁТ НИКАКОЙ ОТВЕТСТВЕННОСТИ ЗА ВАШИ ДЕЙСТВИЯ/ПОСЛЕДСТВИЯ ВАШИХ ДЕЙСТВИЙ

Как это работает

SSH использует асимметричное шифрование. У вас есть два файла:

  • Приватный ключ (id_rsa) — хранится только у вас, никому не передаётся.
  • Публичный ключ (id_rsa.pub) — его вы кладёте на сервер в специальный файл.

При подключении сервер проверяет, что ваш приватный ключ соответствует сохранённому публичному. Если да — пускает без пароля.

Генерация ключа

Linux / MacOS / Windows 10-11:

ssh-keygen -t ed25519 -C "ваш_email@example.com"

Алгоритм ed25519 — современный, быстрый и безопасный. Если по какой-то причине нужен старый формат (например, для совместимости со старым оборудованием), используйте rsa с длиной 4096 бит:

ssh-keygen -t rsa -b 4096 -C "ваш_email@example.com"

Программа спросит, куда сохранить ключ. По умолчанию это ~/.ssh/id_ed25519 (Linux/Mac) или C:\Users\Имя\.ssh\id_ed25519 (Windows). Нажимайте Enter.

Далее предложат установить passphrase — дополнительный пароль для самого ключа. Если вы уверены в безопасности своего компьютера, можно оставить пустым (просто Enter). Если устанавливаете — ключ будет зашифрован, и при каждом использовании нужно будет вводить passphrase (или использовать ssh-agent).

Создал тестовый ключ
Создал тестовый ключ

Копирование публичного ключа на сервер

Сначала посмотрите содержимое публичного ключа:

# Linux/Mac
cat ~/.ssh/id_ed25519.pub
# Windows
type C:\Users\Имя\.ssh\id_ed25519.pub

Скопируйте вывод (одна длинная строка, начинающаяся с ssh-ed25519 или ssh-rsa).

Зайдите на сервер по паролю и выполните:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "ВСТАВЬТЕ_СЮДА_СОДЕРЖИМОЕ_ПУБЛИЧНОГО_КЛЮЧА" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

Права доступа критичны. Если ~/.ssh или authorized_keys имеют слишком открытые права, SSH проигнорирует ключ и будет снова спрашивать пароль. Проверить и исправить:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Настройка SSH-конфига для удобства

Чтобы не запоминать IP-адреса, порты и имена пользователей, создайте файл ~/.ssh/config (на Windows: C:\Users\Имя\.ssh\config):

Host myserver
HostName 192.168.1.100
User deploy
Port 22
IdentityFile ~/.ssh/id_ed25519
Host production
HostName 203.0.113.50
User root
Port 2222
IdentityFile ~/.ssh/id_production

Теперь подключение выглядит так:

ssh myserver
ssh production

SSH сам подставит нужный IP, пользователя, порт и ключ.

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

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

Откройте конфиг SSH-сервера:

sudo nano /etc/ssh/sshd_config

Найдите или добавьте строки:

PasswordAuthentication no
ChallengeResponseAuthentication no
PubkeyAuthentication yes

Перезапустите службу:

sudo systemctl restart sshd

Важно: перед отключением пароля убедитесь, что ключ работает, иначе вы потеряете доступ к серверу. Оставьте открытой вторую SSH-сессию для проверки.

Типичные проблемы

SSH всё равно спрашивает пароль

Проверьте логи сервера:

sudo tail -f /var/log/auth.log
# или
sudo journalctl -u sshd -f

Частые причины:

  • Неправильные права на ~/.ssh (должно быть 700) или authorized_keys (должно быть 600)
  • Домашняя директория пользователя имеет права 777 (исправьте на 755)
  • Публичный ключ скопирован с ошибкой (лишние переносы строк)

"Permission denied (publickey)"

Убедитесь, что приватный ключ имеет права 600:

chmod 600 ~/.ssh/id_ed25519

Проверьте, что используете правильный ключ:

ssh -v user@host

Флаг -v покажет подробный лог подключения, включая то, какие ключи пробуются.

Резервная копия ключей

Потеря приватного ключа означает потерю доступа ко всем серверам. Сделайте резервную копию:

cp ~/.ssh/id_ed25519* /путь/к/безопасному/хранилищу/

Храните копию на зашифрованной флешке ил другом защищенном месте. Никогда не отправляйте приватный ключ по почте или мессенджерам.

Заключение

Какими способами пользуетесь вы? Может, есть полезные утилиты для управления SSH-ключами, о которых мало кто знает? Пишите в комментарии - самые интересные добавлю в статью.
Подписывайтесь на канал, ставьте ❤️, если материал был полезен, и делитесь с коллегами.
Моя предыдущая статья:

https://dzen.ru/a/aicyYQV9Tl748hKw