В предыдущем посте мы рассмотрели основные команды 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.
Если у вас есть вопросы, не стесняйтесь задавать их в комментариях!
Комментариев нет.