Настройка ключей SSH в Ubuntu для подключения к серверу

a computer screen with a lot of data on it

SSH-ключи удобнее и безопаснее пароля: сервер проверяет криптографическую пару, brute-force по паролю перестаёт быть основным вектором. Ниже: создание ключей на Ubuntu, копирование публичного ключа на сервер, вход и алиас в ~/.ssh/config.

1. Создание пары ключей

В терминале на клиенте (ваша Ubuntu):

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

Если нужна совместимость со старыми системами, RSA 4096 всё ещё жив:

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

Путь по умолчанию: ~/.ssh/id_ed25519 (или id_rsa). Enter принимает дефолт. Passphrase: дополнительная защита ключа на диске; пустая фраза проще, но слабее при краже файла ключа.

Публичный ключ: файл с суффиксом .pub. Его можно отдавать на серверы. Приватный (id_ed25519 без .pub) никому не передавайте и не копируйте в репозитории.

2. Копирование ключа на сервер

Самый простой способ: ssh-copy-id (нужен разовый вход по паролю или уже существующий доступ):

ssh-copy-id user@hostname

Утилита допишет публичный ключ в ~/.ssh/authorized_keys на сервере и выставит права. Вручную то же самое:

cat ~/.ssh/id_ed25519.pub | ssh user@hostname "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

3. Вход по ключу

ssh user@hostname

Если задавали passphrase, ssh-agent спросит её (или подхватит уже разблокированный ключ). Пароль учётной записи сервера при успешной key-auth не нужен.

На сервере после проверки входа имеет смысл отключить парольный логин в sshd_config (PasswordAuthentication no), но только когда ключ точно работает и есть запасной канал доступа (консоль провайдера).

4. Алиас в ~/.ssh/config

Чтобы не помнить host/user/key, создайте или отредактируйте ~/.ssh/config:

Host myserver
    HostName hostname
    User user
    IdentityFile ~/.ssh/id_ed25519

Права: chmod 600 ~/.ssh/config. Дальше достаточно:

ssh myserver

Можно добавить Port, ProxyJump, отдельные ключи на разные хосты: один файл, меньше ошибок при ручном наборе.

Итоговый минимум: пара ключей, публичный ключ в authorized_keys, вход через ssh, при желании: аккуратный config. Этого достаточно для повседневной админки без хранения паролей серверов в голове.

Источники и ссылки


Комментарии загружаются…