Когда серверов несколько, помнить IP, порты и ключи неудобно. Клиент OpenSSH читает файл ~/.ssh/config (в Windows — %USERPROFILE%\.ssh\config) и подставляет настройки по короткому имени. Эти же имена понимают scp, rsync, sftp и git.
Базовая запись
Host web-01 HostName 203.0.113.10 User deploy Port 22 IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yesТеперь достаточно команды:
$ ssh web-01IdentitiesOnly yes заставляет клиент предлагать только указанный ключ. Без этого при большом числе ключей в агенте сервер может отказать из-за превышения числа попыток.
Общие настройки для всех серверов
Блок Host * применяется ко всем подключениям. Поместите его в конец файла: для каждого параметра действует первое найденное значение.
Host * ServerAliveInterval 30 ServerAliveCountMax 4 AddKeysToAgent yesServerAliveInterval раз в 30 секунд отправляет служебный пакет, и соединение не рвётся при простое.
Подключение через промежуточный сервер
Если внутренний сервер доступен только из частной сети, заходите на него через публичный одной командой:
Host bastion HostName 203.0.113.10 User deployHost db-internal HostName 10.0.0.5 User deploy ProxyJump bastionПрава на файл
$ chmod 600 ~/.ssh/configПроверьте результат
Команда ssh -G показывает итоговые параметры для имени — удобно, чтобы понять, какой блок сработал:
$ ssh -G web-01 | grep -E "^(hostname|user|port|identityfile)"