Перейти к содержимому

Файл ~/.ssh/config: короткие имена серверов

Подключение командой ssh web-01 вместо длинной строки с IP, портом и ключом; переход через промежуточный сервер.

Уровень
Средний
Время чтения
2 мин чтения
Обновлено
Содержание
  1. Базовая запись
  2. Общие настройки для всех серверов
  3. Подключение через промежуточный сервер
  4. Права на файл
  5. Проверьте результат

Когда серверов несколько, помнить IP, порты и ключи неудобно. Клиент OpenSSH читает файл ~/.ssh/config (в Windows — %USERPROFILE%\.ssh\config) и подставляет настройки по короткому имени. Эти же имена понимают scp, rsync, sftp и git.

Базовая запись

~/.ssh/config
Host web-01    HostName 203.0.113.10    User deploy    Port 22    IdentityFile ~/.ssh/id_ed25519    IdentitiesOnly yes

Теперь достаточно команды:

bash
$ ssh web-01

IdentitiesOnly yes заставляет клиент предлагать только указанный ключ. Без этого при большом числе ключей в агенте сервер может отказать из-за превышения числа попыток.

Общие настройки для всех серверов

Блок Host * применяется ко всем подключениям. Поместите его в конец файла: для каждого параметра действует первое найденное значение.

text
Host *    ServerAliveInterval 30    ServerAliveCountMax 4    AddKeysToAgent yes

ServerAliveInterval раз в 30 секунд отправляет служебный пакет, и соединение не рвётся при простое.

Подключение через промежуточный сервер

Если внутренний сервер доступен только из частной сети, заходите на него через публичный одной командой:

text
Host bastion    HostName 203.0.113.10    User deployHost db-internal    HostName 10.0.0.5    User deploy    ProxyJump bastion

Права на файл

bash
$ chmod 600 ~/.ssh/config

Проверьте результат

Команда ssh -G показывает итоговые параметры для имени — удобно, чтобы понять, какой блок сработал:

bash
$ ssh -G web-01 | grep -E "^(hostname|user|port|identityfile)"

Дочитайте до конца — статья засчитается в обучении автоматически.

  • ssh config
  • алиас
  • ProxyJump
  • IdentityFile
  • несколько серверов

Статья помогла?