Использование файла конфигурации SSH

Файл конфигурации SSH

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

Один из вариантов — создать псевдоним bash для каждого подключения к удалённому серверу. Однако есть и другое, гораздо лучшее и более простое решение этой проблемы. OpenSSH позволяет настроить файл конфигурации для каждого пользователя, в котором можно хранить различные параметры SSH для каждой удалённой машины, к которой вы подключаетесь.

В этой статье рассматриваются основы файла конфигурации клиента SSH и объясняются некоторые наиболее распространенные параметры конфигурации.

Предпосылки

Мы предполагаем, что вы используете систему Linux или macOS с установленным клиентом OpenSSH.

Расположение файла конфигурации SSH

Файл конфигурации клиента OpenSSH называется config и хранится в каталоге .ssh в домашнем каталоге пользователя.

Каталог ~/.ssh создаётся автоматически при первом запуске пользователем команды ssh . Если каталог отсутствует в вашей системе, создайте его с помощью следующей команды:

 mkdir -p ~/.ssh && chmod 700 ~/.ssh

По умолчанию файл конфигурации SSH может отсутствовать, поэтому вам может потребоваться создать его с помощью команды touch :

 touch ~/.ssh/config

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

 chmod 600 ~/.ssh/config

Структура и шаблоны файла конфигурации SSH

Файл конфигурации SSH имеет следующую структуру:

 Host hostname1 SSH_OPTION value SSH_OPTION value Host hostname2 SSH_OPTION value Host * SSH_OPTION value

Содержимое файла конфигурации SSH-клиента разделено на строфы (разделы). Каждая строфа начинается с директивы Host и содержит конкретные параметры SSH, используемые при установлении соединения с удалённым SSH-сервером.

Отступы не обязательны, но рекомендуются, поскольку они облегчают чтение файла.

Директива Host может содержать один шаблон или список шаблонов, разделённых пробелами. Каждый шаблон может содержать ноль или более символов, отличных от пробелов, или один из следующих спецификаторов шаблона:

  • * — соответствует нулю или более символам. Например, Host * соответствует всем хостам, а 192.168.0.* соответствует хостам в подсети 192.168.0.0/24 .
  • ? — Соответствует ровно одному символу. Шаблон Host 10.10.0.? соответствует всем хостам в диапазоне 10.10.0.[0-9] .
  • ! — При использовании в начале шаблона отменяет соответствие. Например, Host 10.10.0.* !10.10.0.5 соответствует любому хосту в подсети 10.10.0.0/24 , кроме 10.10.0.5 .

SSH-клиент считывает файл конфигурации строфа за строфой, и если совпало несколько шаблонов, приоритет имеют параметры из первой совпавшей строфы. Поэтому в начале файла следует указать больше специфичных для хоста объявлений, а в конце — более общие переопределения.

Полный список доступных параметров SSH можно найти, введя man ssh_config в терминале или посетив страницу руководства ssh_config .

Файл конфигурации SSH также считывается другими программами, такими как scp , sftp и rsync .

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

Теперь, когда мы рассмотрели основы файла конфигурации SSH, давайте рассмотрим следующий пример.

Обычно при подключении к удалённому серверу по SSH необходимо указать имя удалённого пользователя, имя хоста и порт. Например, чтобы войти под именем john на хост dev.example.com через порт 2322 из командной строки, введите:

 ssh john@dev.example.com -p 2322

Чтобы подключиться к серверу, используя те же параметры, что указаны в команде выше, просто введите ssh dev и добавьте следующие строки в файл "~/.ssh/config :

~/.ssh/config

 Host dev HostName dev.example.com User john Port 2322

Теперь при вводе ssh dev клиент ssh прочитает файл конфигурации и будет использовать данные подключения, указанные для хоста dev :

 ssh dev

Пример файла конфигурации общего SSH

В этом примере дана более подробная информация о шаблонах хоста и приоритетах опций.

Давайте возьмем следующий файл-пример:

 Host targaryen HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key Host tyrell HostName 192.168.10.20 Host martell HostName 192.168.10.50 Host *ell user oberyn Host * !martell LogLevel INFO Host * User root Compression yes
  • При вводе ssh targaryen , SSH-клиент считывает файл и применяет параметры из первого совпадения, которое называется Host targaryen . Затем он последовательно проверяет следующие строфы на соответствие шаблону. Следующее совпадение — Host * !martell (то есть все хосты, кроме martell ), и он применяет параметр подключения из этой строфы. Последнее определение Host * также соответствует, но SSH-клиент использует только параметр Compression поскольку параметр User уже определён в строфе Host targaryen .

    Полный список опций, используемых при вводе ssh targaryen выглядит следующим образом:

     HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes
  • При запуске ssh tyrell соответствующие шаблоны хостов: Host tyrell , Host *ell , Host * !martell и Host * . В данном случае используются следующие параметры:

     HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes
  • Если вы запустите ssh martell , соответствующие шаблоны хостов будут следующими: Host martell , Host *ell и Host * . В этом случае используются следующие параметры:

     HostName 192.168.10.50 User oberyn Compression yes
  • Для всех остальных подключений клиент ssh будет использовать параметры, указанные в разделах Host * !martell и Host * .

Переопределить параметр файла конфигурации SSH

Клиент ssh считывает свою конфигурацию в следующем порядке приоритета:

  1. Параметры, указанные в командной строке.
  2. Параметры, определенные в ~/.ssh/config .
  3. Параметры, определенные в /etc/ssh/ssh_config .

Если вы хотите переопределить один параметр, вы можете указать его в командной строке. Например, если у вас есть следующее определение:

 Host dev HostName dev.example.com User john Port 2322

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

 ssh -o "User=root" dev

Параметр -F ( configfile ) позволяет указать альтернативный файл конфигурации для каждого пользователя.

Чтобы указать клиенту ssh игнорировать все параметры, указанные в файле конфигурации ssh, используйте:

 ssh -F /dev/null user@example.com

Заключение

Мы показали вам, как настроить пользовательский файл конфигурации SSH. Вы также можете настроить аутентификацию по ключу SSH и подключаться к своим серверам Linux без ввода пароля.

По умолчанию SSH прослушивает порт 22. Изменение порта SSH по умолчанию добавляет дополнительный уровень безопасности вашему серверу, снижая риск автоматизированных атак.

Если у вас есть вопросы, пожалуйста, оставьте комментарий ниже.

SSH- терминал

Связанные руководства

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *