SSH-ключи используют криптографию с открытым ключом. У вас есть два файла: приватный ключ (хранится у вас) и публичный ключ (размещается на сервере). Никакой пароль не передаётся по сети.
Генерация ключей (Linux / Mac)
# Современный алгоритм Ed25519 (рекомендуется)
ssh-keygen -t ed25519 -C "your@email.com"
# Или RSA-4096 для совместимости
ssh-keygen -t rsa -b 4096 -C "your@email.com"
# Ключи сохранятся в ~/.ssh/
# ~/.ssh/id_ed25519 ← приватный (НИКОМУ не передавать)
# ~/.ssh/id_ed25519.pub ← публичный (можно размещать везде)
Добавление ключа на сервер
# Автоматически (самый простой способ)
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server-ip
# Или вручную:
cat ~/.ssh/id_ed25519.pub | ssh user@server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Генерация ключей в Windows (PuTTYgen)
- Скачайте PuTTYgen с официального сайта PuTTY
- Выберите EdDSA или RSA (4096 бит)
- Нажмите Generate и двигайте мышью
- Сохраните приватный ключ (Save private key)
- Скопируйте публичный ключ из текстового поля вверху
- Добавьте его в
~/.ssh/authorized_keysна сервере
Отключение входа по паролю
⚠️ Выполняйте только убедившись, что вход по ключу работает! Иначе потеряете доступ к серверу.
sudo nano /etc/ssh/sshd_config
# Изменить или добавить:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
sudo systemctl restart sshd
✅ После настройки SSH-ключей атаки перебором паролей становятся бессмысленными — сервер просто не примет пароль.