В предыдущем посте мы рассмотрели базовый синтаксис команды `ssh` и полезные опции. Но вводить каждый раз длинный IP‑адрес, имя пользователя и порт – это просто неудобно. В таких случаях **файл SSH‑Config** решает проблему за один клик. Он хранит часто используемые данные подключения, как закладки, и позволяет подключаться по простому **алиасу**. Я сам, будучи новичком, не знал о существовании конфигурационного файла и часто регистрировал алиасы в `.bashrc`. Когда я узнал о `config`, понял, насколько «глупо» было то, что я делал. ![Понимание SSH‑config](/media/whitedec/blog_img/ssh_config_favorite_style.webp) --- ## Что такое SSH‑Config файл? {#sec-481141e7802b} **SSH‑Config** – это пользовательский файл, определяющий поведение SSH‑клиента. В нём можно заранее задать параметры подключения (имя пользователя, порт, ключи), чтобы позже использовать только алиас. * **Расположение:** обычно находится в `~/.ssh/config`. Если его нет, создайте. * **Создание:** ```bash touch ~/.ssh/config chmod 600 ~/.ssh/config # обязательно 600! ``` --- ## Правила написания конфигурации {#sec-a6ba2fff88f5} Файл – простая текстовая строка. Каждый блок начинается ключевым словом `Host` и содержит параметры. #### Базовый шаблон ```bash Host [алиас] [опция1] [значение1] [опция2] [значение2] … ``` * **`Host [алиас]`** – начало блока, определяет алиас. Можно использовать реальный адрес или шаблон с `*`/`?`. * **Отступы** – обязательны, но могут быть пробелами или табуляцией. * **Опции** – любые параметры SSH, которые обычно передаются как `ssh -опция`. ### Часто используемые опции {#sec-488803d47bdf} | Опция | Описание | Пример | | --- | --- | --- | | `HostName` | IP или домен сервера | `192.168.1.100` или `example.com` | | `User` | Имя пользователя | `ubuntu`, `ec2-user`, `root` | | `Port` | Порт SSH (по умолчанию 22) | `2222` | | `IdentityFile` | Путь к приватному ключу | `~/.ssh/id_ed25519_myserver` | | `ForwardAgent` | Включить агент‑форвардинг | `yes` | | `StrictHostKeyChecking` | Жёсткая проверка ключа | `no` (тест) | | `PortForwarding` | Разрешить порт‑форвардинг | `yes` | | `LocalForward` | Локальный порт‑форвардинг | `8080 localhost:80` | | `ServerAliveInterval` | Интервал проверки живости | `60` | | `ServerAliveCountMax` | Кол-во попыток перед разрывом | `3` | --- ## Пример конфигурации {#sec-92c9daf3ee29} Добавим несколько серверов в `~/.ssh/config`. ```ini # Первый сервер: веб‑сервер (алиас: 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 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-`, автоматически используют `ec2-user` и ключ `aws_ec2_key.pem`. * `10.0.0.*` – любой IP из диапазона `10.0.0.x` подключается как `admin` на порт `22`. > На практике я редко использую шаблоны с `*`. Обычно создаю отдельный алиас для каждого сервера, но иногда удобно иметь общий алиас для группы. --- ![Магия подключения через SSH](/media/whitedec/blog_img/ssh_config_network_magic.webp) ## Как использовать конфиг {#sec-e176d1ccdfce} После сохранения конфигурации подключаться становится проще. ### 1. Подключение по алиасу {#sec-b0810f8f4908} ```bash 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`. ```bash ssh devbox Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev': developer@devbox-domain:~ $ ``` --- ## Преимущества использования конфигурации {#sec-2c234f7e8725} * **Удобство** – короткие алиасы вместо длинных команд. * **Производительность** – быстро переключаться между серверами. * **Управляемость** – все параметры в одном месте, легко обновлять. * **Безопасность** – ключи не попадают в историю команд. --- ## Итоги {#sec-9c659c3d712e} Файл `~/.ssh/config` – незаменимый инструмент для всех, кто регулярно использует SSH. Создайте свои алиасы и наслаждайтесь более быстрым и безопасным подключением. Если хотите узнать больше, ищите в поиске «ssh» – там много полезных статей. Если возникнут вопросы, пишите в комментариях!