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

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

Using the SSH Config File

5 Января 2020 | Терминал

Это руководство охватывает основы файла конфигурации клиента SSH и объясняет некоторые из наиболее распространенных параметров конфигурации.

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

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

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

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


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

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

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

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


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

touch ~/.ssh/config


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

chmod 600 ~/.ssh/config


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

Файл конфигурации 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 по умолчанию добавляет дополнительный уровень безопасности вашему серверу, снижая риск автоматических атак.


    Комментарии

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

Загрузка комментариев...