В предыдущем посте мы рассмотрели базовый синтаксис команды ssh и полезные опции. Но вводить каждый раз длинный IP‑адрес, имя пользователя и порт – это просто неудобно.

В таких случаях файл SSH‑Config решает проблему за один клик. Он хранит часто используемые данные подключения, как закладки, и позволяет подключаться по простому алиасу.

Я сам, будучи новичком, не знал о существовании конфигурационного файла и часто регистрировал алиасы в .bashrc. Когда я узнал о config, понял, насколько «глупо» было то, что я делал.

Понимание SSH‑config


Что такое SSH‑Config файл?

SSH‑Config – это пользовательский файл, определяющий поведение SSH‑клиента. В нём можно заранее задать параметры подключения (имя пользователя, порт, ключи), чтобы позже использовать только алиас.

  • Расположение: обычно находится в ~/.ssh/config. Если его нет, создайте.
  • Создание:
    touch ~/.ssh/config
    chmod 600 ~/.ssh/config  # обязательно 600!

Правила написания конфигурации

Файл – простая текстовая строка. Каждый блок начинается ключевым словом Host и содержит параметры.

Базовый шаблон

    Host [алиас]
        [опция1] [значение1]
        [опция2] [значение2]
        …
  • 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 Включить агент‑форвардинг yes
StrictHostKeyChecking Жёсткая проверка ключа no (тест)
PortForwarding Разрешить порт‑форвардинг yes
LocalForward Локальный порт‑форвардинг 8080 localhost:80
ServerAliveInterval Интервал проверки живости 60
ServerAliveCountMax Кол-во попыток перед разрывом 3

Пример конфигурации

Добавим несколько серверов в ~/.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
    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

Как использовать конфиг

После сохранения конфигурации подключаться становится проще.

1. Подключение по алиасу

    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.

    ssh devbox
    Enter passphrase for key '/home/youruser/.ssh/id_rsa_dev':
    developer@devbox-domain:~ $

Преимущества использования конфигурации

  • Удобство – короткие алиасы вместо длинных команд.
  • Производительность – быстро переключаться между серверами.
  • Управляемость – все параметры в одном месте, легко обновлять.
  • Безопасность – ключи не попадают в историю команд.

Итоги

Файл ~/.ssh/config – незаменимый инструмент для всех, кто регулярно использует SSH. Создайте свои алиасы и наслаждайтесь более быстрым и безопасным подключением. Если хотите узнать больше, ищите в поиске «ssh» – там много полезных статей.

Если возникнут вопросы, пишите в комментариях!