Как настроить ssh config для удобной работы

Настройка файла конфигурации ssh config позволяет значительно упростить и ускорить работу с удаленными серверами по SSH. Этот файл конфигурации по умолчанию располагается в домашней директории пользователя: ~/.ssh/config (в Linux и MacOS) или %userprofile%\.ssh\config (в Windows).

Основные преимущества настройки ssh config:

  • Не нужно каждый раз вводить длинные имена хостов или IP-адреса серверов, можно указывать короткие псевдонимы.
  • Можно задать пользователя по умолчанию для подключения к серверу, чтобы не вводить его каждый раз.
  • Возможность хранить часто используемые ключи и настройки прокси в одном месте.
  • Удобное разделение конфигурации на логические группы серверов.

Псевдонимы хостов

Самое простое и полезное - задать псевдонимы для длинных имен хостов или IP-адресов. Это позволит подключаться простой командой ssh shortname вместо ssh longname.example.com.

Например, чтобы подключиться к серверу по IP 192.168.0.123 как ssh myserver, нужно добавить в config:

 Host myserver HostName 192.168.0.123 

Пользователь по умолчанию

Можно избавиться от необходимости вводить имя пользователя при каждом подключении к серверу, указав его в настройках хоста:

 Host myserver HostName 192.168.0.123 User john 

После этого достаточно выполнить ssh myserver, и подключение произойдет от имени пользователя john.

Конфигурация прокси

Если подключение к серверам идет через прокси, настройки прокси можно задать глобально или для отдельных хостов.

Глобальные настройки прокси:

 Host * ProxyCommand nc -x proxy.example.com:8080 %h %p 

Прокси для конкретного хоста:

 Host myserver HostName 192.168.0.123 ProxyCommand nc -x proxy.example.com:8080 %h %p 

Группировка хостов

Хосты можно объединять в логические группы. Это удобно для применения общих настроек к группе хостов.

Например:

 Host prod-* User admin IdentityFile ~/.ssh/prod_servers Host staging-* User test IdentityFile ~/.ssh/staging_servers 

Также группы позволяют выполнить команду одновременно на нескольких хостах:

 ssh prod-* uname -a 

Использование ssh config file в Windows

В Windows конфигурационный файл ssh располагается по пути %userprofile%\.ssh\config.

Чтобы использовать этот файл, нужно включить поддержку OpenSSH в Windows.

Для работы со ssh в Windows 10 и 11 можно установить подсистему Linux или использовать встроенный клиент OpenSSH.

Подсистема Linux позволяет работать в полноценном Linux-окружении через консоль. Встроенный OpenSSH предоставляет клиентскые команды ssh, scp в Windows консоли.

Таким образом, при правильной настройке файл ssh config будет работать в Windows так же, как и в Linux или MacOS.

Это дает возможность централизованно управлять доступом к удаленным серверам и настраивать удобные псевдонимы.

Подробнее о настройке OpenSSH в Windows можно прочитать в официальной документации Microsoft.

В целом же, использование ssh config file позволяет существенно упростить и ускорить ежедневную работу с удаленными серверами. Этот небольшой конфигурационный файл дает массу возможностей для оптимизации рабочих процессов.

Использование SSH ключей

Еще одна полезная возможность конфигурации SSH - указание ключей для аутентификации. Это позволяет не вводить пароль при каждом подключении.

Чтобы использовать SSH ключ для подключения к серверу, нужно указать путь к приватному ключу в настройках хоста:

 Host myserver IdentityFile ~/.ssh/mykey 

Ключи можно задавать для групп хостов:

 Host prod-* IdentityFile ~/.ssh/prod_servers 

Также можно указать несколько ключей, если требуется проверка по разным ключам для разных хостов:

 Host server1 IdentityFile ~/.ssh/key1 Host server2 IdentityFile ~/.ssh/key2 

Перенаправление портов через SSH

Файл конфигурации SSH позволяет легко настроить перенаправление портов через SSH туннель.

Например, чтобы сделать порт 8080 локального компьютера доступным на порту 80 сервера, можно добавить:

 Host myserver LocalForward 8080 127.0.0.1:80 

После этого все запросы к myserver:80 будут перенаправляться на 8080 порт локальной машины.

Динамическое резолвирование имен хостов

Если нужно, чтобы имя хоста разрешалось динамически при каждом подключении, можно использовать параметр CanonicalDomains.

Например:

 Host *.mydomain.com CanonicalDomains mydomain.com 

Это позволит подключаться просто указывая имя хоста, без необходимости знать его текущий IP.

Конфигурирование SSH агента

Файл ssh config также может управлять поведением SSH агента, который кэширует введенные пароли и ключи.

Например, чтобы агент запрашивал пароль только раз за сессию, а не при каждом новом подключении, используется:

 Host * AddKeysToAgent yes UseKeychain yes 

Это избавляет от необходимости каждый раз вводить пароль к ключу.

Автоматическое дополнение команд

SSH конфиг позволяет настроить автоматическое дополнение команд при подключении к хосту.

Например, чтобы выполнять команду ls сразу после подключения, используется:

 Host myserver User john LocalCommand ls 

Автодополнение удобно настраивать для разных групп хостов:

 Host prod-* LocalCommand cd /var/www/prod Host staging-* LocalCommand cd /var/www/staging 
Комментарии