В прошлом посте мы разобрали базовое использование команды ssh и полезные опции. Но каждый раз вручную вводить сложный IP-адрес, имя пользователя, номер порта и прочие детали — занятие ещё то: неудобно и быстро начинает раздражать.
В таких случаях выручает SSH config-файл. Он позволяет сохранить настройки подключения к часто используемым серверам — почти как «избранное» — и подключаться к ним по короткому псевдониму (alias).
Кстати, я сам, когда был «совсем новичком» и даже не подозревал о существовании config-файла, думал: «Да как вообще каждый раз набирать эту длиннющую и сложную команду для SSH-подключения?» В итоге я просто брал строку команды, как есть, и регистрировал её как alias в файле .bashrc. А когда позже узнал, как правильно оформлять config, понял, насколько по-деревенски и безграмотно я тогда выкручивался.

Что такое SSH config-файл?
SSH config-файл — это конфигурационный файл, с помощью которого можно настраивать поведение SSH-клиента. Если заранее сохранить в нём параметры подключения к конкретному хосту (пользователь, порт, ключ и т. д.), то позже можно подключаться, вводя всего лишь короткий псевдоним.
- Расположение: обычно он находится в папке
.sshв домашнем каталоге пользователя и называетсяconfig. Если вы только что установили SSH, его, скорее всего, ещё нет — тогда файл нужно создать. - Создание файла: если
~/.ssh/configотсутствует, создайте его вручную. Права доступа обязательно должны быть 600.
touch ~/.ssh/config
chmod 600 ~/.ssh/config # Настройка прав обязательна для безопасности!
Правила написания config-файла
Config-файл — это простой текстовый файл. Настройки для каждого хоста оформляются блоком, который начинается с ключевого слова Host.
Базовая структура
Host [псевдоним]
[опция1] [значение1]
[опция2] [значение2]
...
Host [псевдоним]: обозначает начало блока и задаёт псевдоним (alias), который вы будете использовать в командеssh. Вместо псевдонима можно указать реальный адрес хоста (IP или домен). Также поддерживаются маски (*,?).- Отступы: опции внутри блока должны быть с отступом. Можно использовать пробелы или табы — главное, придерживаться одного стиля.
- Опции: ниже
Hostперечисляются параметры SSH, которые применяются при подключении по этому псевдониму. По сути это то же самое, что вы раньше передавали черезssh -опция.
Часто используемые опции
| Опция | Описание | Пример значения |
HostName |
Реальный IP-адрес или доменное имя сервера | 192.168.1.100 или example.com |
User |
Имя пользователя для подключения | ubuntu, ec2-user, root |
Port |
SSH-порт сервера (по умолчанию 22) | 2222 |
IdentityFile |
Путь к приватному ключу | ~/.ssh/id_ed25519_myserver |
ForwardAgent |
Включить проброс SSH-агента (при ssh-agent) |
yes |
StrictHostKeyChecking |
Насколько строго проверять host key (yes рекомендуется) |
no (временно для первых тестов) |
PortForwarding |
Разрешить порт-форвардинг | yes |
LocalForward |
Локальный порт-форвардинг (аналог -L) |
8080 localhost:80 |
ServerAliveInterval |
Интервал (сек.) для проверки, что соединение живо | 60 (чтобы не отваливалось) |
ServerAliveCountMax |
Сколько раз повторять проверку перед разрывом | 3 |
Пример SSH config-файла
Добавим настройки для нескольких серверов, к которым вы подключаетесь чаще всего, в ~/.ssh/config.
# Первый сервер: веб-сервер (псевдоним: webserver)
Host webserver
HostName 192.168.1.100
User ubuntu
Port 2222
IdentityFile ~/.ssh/id_ed25519_webserver # Отдельный ключ для веб-сервера
# Второй сервер: dev-сервер (псевдоним: devbox)
Host devbox
HostName dev.example.com
User developer
IdentityFile ~/.ssh/id_rsa_dev # Используем RSA-ключ
# При подключении к этому серверу пробрасываем локальный 8000 порт на удалённый 80 порт
LocalForward 8000 localhost:80
# Третий пример: все AWS EC2 серверы (шаблон псевдонимов: aws-*)
Host aws-*
User ec2-user
IdentityFile ~/.ssh/aws_ec2_key.pem
# Периодически шлём keep-alive, чтобы соединение не разрывалось
ServerAliveInterval 60
ServerAliveCountMax 3
# Общие настройки для определённого диапазона IP (шаблон: 10.0.0.*)
Host 10.0.0.*
User admin
Port 22
Пояснения:
webserver: подключение к192.168.1.100какubuntuчерез порт2222с ключомid_ed25519_webserver.devbox: подключение кdev.example.comкакdeveloperс ключомid_rsa_devи пробросом локального порта 8000 на удалённый порт 80.aws-*: настройки, которые применяются ко всем псевдонимам, начинающимся сaws-. Например, приaws-prodилиaws-devавтоматически применятсяUserиIdentityFile.HostNameв таком случае интерпретируется какprodпри подключении черезaws-prod(и затем используется вssh aws-prod).10.0.0.*: при подключении к IP-адресам вида10.0.0.xавтоматически применяется пользовательadminи стандартный порт 22.
Честно говоря, я показал вариант с wildcard
*просто для знакомства, но в реальной жизни почти так не делаю. Обычно проще и понятнее поддерживать конфиг, когда один сервер = один блок настроек (1:1).
И ещё: иногда к одному и тому же серверу нужно подключаться с разными настройками. Тогда я добавляю несколько вариантов и выбираю псевдоним как блюдо в меню ресторана — набралssh my-aliasи «заказал» нужный способ подключения.

Как пользоваться config-файлом
После того как настройки сохранены в config-файле, подключаться становится гораздо проще. Давайте попробуем на основе примеров выше.
1. Подключение по псевдониму
Выполняем SSH-команду, используя только псевдоним.
- Псевдоним
webserver:
ssh webserver
Enter passphrase for key '/home/youruser/.ssh/id_ed25519_webserver':
ubuntu@webserver-ip:~ $
Эта команда внутри эквивалентна:
ssh -p 2222 -i ~/.ssh/id_ed25519_webserver ubuntu@192.168.1.100
- Псевдоним
devbox:
ssh devbox
Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
developer@devbox-domain:~ $
(При этом локальный порт 8000 будет проброшен на порт 80 на
dev.example.com.)
Преимущества использования config-файла
- Удобство: длинные и сложные SSH-команды заменяются короткими псевдонимами — меньше ошибок и меньше печати.
- Продуктивность: можно быстро переключаться между серверами и работать эффективнее.
- Простота управления: все настройки подключения лежат в одном месте, поэтому сопровождать их легче. Например, если у сервера поменялся IP — достаточно поправить только config.
- Безопасность: важные детали (например путь к ключу) не остаются в истории команд.
В заключение
SSH config-файл — обязательный инструмент для всех, кто регулярно пользуется SSH: и для разработчиков, и для системных администраторов. С ним подключение становится заметно удобнее и быстрее. Откройте ~/.ssh/config и создайте свои собственные псевдонимы!
Почитайте и другие посты про SSH: в правом поле поиска просто введите ssh, и вы найдёте больше материалов по теме.
Если остались вопросы — смело задавайте их в комментариях!
Комментариев нет.