SSH ключі

Час: ~10 хвилин
Рівень: Початківець
Потрібно: Комп'ютер з терміналом

Що отримаємо

SSH ключову пару для безпечного доступу до серверів без пароля.

┌──────────────┐                    ┌──────────────┐
│  Ваш ПК      │                    │   Сервер     │
│              │                    │              │
│ id_ed25519   │───── SSH ─────────►│ authorized   │
│ (приватний)  │                    │ _keys        │
│              │                    │ (публічний)  │
└──────────────┘                    └──────────────┘

Передумови

  • [ ] Комп'ютер з Linux, macOS або Windows (з OpenSSH)
  • [ ] Доступ до терміналу

Крок 1: Перевірка існуючих ключів

ls -la ~/.ssh/

Якщо бачите id_ed25519 або id_rsa — ключі вже є.

Крок 2: Генерація ключа

Рекомендований: Ed25519

ssh-keygen -t ed25519 -C "your@email.com"

Альтернатива: RSA (для старих систем)

ssh-keygen -t rsa -b 4096 -C "your@email.com"

Процес генерації:

Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519): [Enter]
Enter passphrase (empty for no passphrase): [введіть пароль]
Enter same passphrase again: [повторіть]

Passphrase — додатковий захист ключа. Рекомендується використовувати.

Результат:

Your identification has been saved in /home/user/.ssh/id_ed25519
Your public key has been saved in /home/user/.ssh/id_ed25519.pub

Крок 3: Перегляд публічного ключа

cat ~/.ssh/id_ed25519.pub

Результат:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... your@email.com

Цей рядок потрібно додати на сервер.

Крок 4: Копіювання ключа на сервер

Автоматично (ssh-copy-id)

ssh-copy-id user@server

Введіть пароль користувача сервера. Ключ буде додано автоматично.

Вручну

  1. Скопіюйте публічний ключ:
cat ~/.ssh/id_ed25519.pub
  1. На сервері:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# Вставте ключ на новий рядок
chmod 600 ~/.ssh/authorized_keys

Крок 5: Тестування підключення

ssh user@server

Має підключитись без запиту пароля сервера (тільки passphrase ключа, якщо встановлено).

Крок 6: Налаштування ~/.ssh/config

Створіть конфігураційний файл для зручності:

nano ~/.ssh/config

Вміст:

# Сервер 1
Host myserver
    HostName 192.168.1.100
    User admin
    IdentityFile ~/.ssh/id_ed25519

# Сервер 2 з нестандартним портом
Host webserver
    HostName web.example.com
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

# Всі сервери
Host *
    AddKeysToAgent yes
    IdentitiesOnly yes

Тепер можна підключатись простіше:

ssh myserver
# замість
ssh -i ~/.ssh/id_ed25519 admin@192.168.1.100

Крок 7: SSH Agent

SSH agent зберігає розшифровані ключі в пам'яті:

Запуск agent

eval "$(ssh-agent -s)"

Додавання ключа

ssh-add ~/.ssh/id_ed25519

Введіть passphrase один раз — далі agent використовуватиме ключ автоматично.

Перегляд доданих ключів

ssh-add -l

Автозапуск agent

Додайте в ~/.bashrc або ~/.zshrc:

# Start SSH agent
if [ -z "$SSH_AUTH_SOCK" ]; then
    eval "$(ssh-agent -s)"
    ssh-add ~/.ssh/id_ed25519 2>/dev/null
fi

Крок 8: Безпека ключа

Права доступу

# Директорія
chmod 700 ~/.ssh

# Приватний ключ
chmod 600 ~/.ssh/id_ed25519

# Публічний ключ
chmod 644 ~/.ssh/id_ed25519.pub

# authorized_keys
chmod 600 ~/.ssh/authorized_keys

Резервне копіювання

Зробіть backup приватного ключа! Зберігайте в безпечному місці:
- Password manager
- Encrypted USB drive
- Зашифрований хмарний storage

Windows: особливості

PowerShell

SSH вбудований в Windows 10/11:

ssh-keygen -t ed25519 -C "your@email.com"

Ключі зберігаються в C:\Users\YourName\.ssh\

PuTTY

  1. Запустіть PuTTYgen
  2. Виберіть Ed25519 або RSA 4096
  3. Натисніть Generate
  4. Збережіть приватний ключ (.ppk)
  5. Скопіюйте публічний ключ

Типові проблеми

Permission denied (publickey)

Симптоми: Сервер не приймає ключ

Рішення:
1. Перевірте права доступу:
bash chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
2. Перевірте що ключ доданий в authorized_keys
3. Перевірте логи: sudo tail /var/log/auth.log

Agent не працює

Симптоми: Постійно питає passphrase

Рішення:

# Перезапустіть agent
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

Неправильний ключ

Симптоми: Too many authentication failures

Рішення:

# Вказати конкретний ключ
ssh -i ~/.ssh/id_ed25519 user@server

# Або в config
IdentitiesOnly yes

Наступні кроки

Див. також

Шлях: step-by-step/ssh-keys-setup.md

UMTC Wiki © 2026 | Ukrainian Military Tactical Communications