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. Этого достаточно для повседневной админки без хранения паролей серверов в голове.