В предыдущем посте мы рассмотрели основные команды ssh и полезные опции. Однако постоянно вводить сложные IP-адреса, имена пользователей, номера портов и т. д. – это довольно неудобно. В таких случаях использование SSH Config файла может решить все эти неудобства за один раз. Это как закладка, которая сохраняет информацию о часто используемых серверах, позволяя легко подключаться с помощью псевдонима (Alias).

Что такое SSH Config файл?
SSH Config файл – это файл настроек, который позволяет настраивать поведение клиента SSH. Если вы заранее сохраните информацию о подключении (имя пользователя, порт, файл ключа и т. д.) для определенного хоста в этом файле, вы сможете подключаться позже с помощью лишь короткого псевдонима.
- Расположение: Обычно этот файл существует в папке
.sshвашего домашнего каталога с именемconfig.- Пример:
~/.ssh/config
- Пример:
-
Создание файла: Если файл
~/.ssh/configотсутствует, вам нужно его создать.bash touch ~/.ssh/config chmod 600 ~/.ssh/config # чтобы обеспечить безопасность, права чтения/записи разрешены только владельцу
Правила написания Config файла
Config файл – это простой текстовый файл, и настройки для каждого хоста начинаются с ключевого слова Host и оформляются в блоках.
Основная структура
Host [псевдоним]
[опция1] [значение1]
[опция2] [значение2]
...
-
Host [псевдоним]: Указывает на начало блока и определяет ваш псевдоним (Alias), который вы будете использовать в командной строке SSH. Вместо псевдонима можно вставить непосредственно фактический адрес хоста (IP или домен). Вы также можете использовать символы подстановки (*,?). -
Отступы: Опции под
Hostдолжны быть отформатированы с отступами. Вы можете использовать пробелы или табуляцию, но лучше поддерживать согласованность. -
Опции: Под
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-агента (Agent Forwarding, при использовании ssh-agent) |
yes |
StrictHostKeyChecking |
Жесткая проверка ключа хоста (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 # Использовать ключ, предназначенный для веб сервера
# Второй сервер: сервер разработки (псевдоним: 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
# Присылает сигналы регулярно, чтобы поддерживать соединение
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.*: Автоматически применяет пользователяadminи стандартный порт 22 при подключении к IP-адресам в формате10.0.0.x.

Как использовать 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)
- Использование
aws-prod(псевдоним с подстановкой):
ssh aws-prod
Enter passphrase for key '/home/youruser/.ssh/aws_ec2_key.pem':
ec2-user@aws-prod-hostname:~ $
Внимание: Для псевдонимов с подстановкой, таких как aws-prod, для которых имя хоста не указано отдельно, вам может потребоваться явно задать опцию HostName или указать имя хоста в командной строке. В примере aws-* выше HostName не указан, поэтому когда вы выполняете ssh aws-prod, SSH-клиент попытается интерпретировать prod как имя хоста. Для большей ясности рекомендуется сопоставить Host prod-server и HostName prod.example.com.
Преимущества использования Config файла
- Удобство: Вы можете заменить длинные и сложные команды SSH короткими псевдонимами, что уменьшает вероятность ошибок ввода и экономит время.
- Продуктивность: Быстро перемещаться между часто используемыми серверами, что повышает эффективность работы.
- Легкость управления: Все настройки подключения можно управлять в одном месте, упрощая обслуживание. Например, если изменится IP-адрес сервера, достаточно внести изменения лишь в Config файл.
- Безопасность: Вы не оставляете важную информацию (например, путь к файловому ключу) в истории команд.
В заключение
SSH Config файл является обязательным инструментом для всех разработчиков и системных администраторов, использующих SSH. Используя этот файл, вы можете сделать ваш опыт подключения SSH значительно более удобным и эффективным. Откройте файл ~/.ssh/config и создайте свои собственные псевдонимы!
Также ознакомьтесь с другими постами о SSH! Используя правую поисковую строку, вы можете найти множество статей, связанных с ssh.
Если у вас есть вопросы, не стесняйтесь задавать их в комментариях!
Комментариев нет.