Поиск по сайту:
Каждый диктатор начинает с того, что упрощает (Э.М. Ремарк).

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

10.01.2019

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

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

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

 

Необходимые компоненты

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

 

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

OpenSSH в клиентский файл конфигурации имеет имя config и хранится в каталоге .ssh в разделе Домашний каталог пользователя. Этот каталог ~/.ssh создается автоматически, когда пользователь запускает SSH команду впервые.

Если вы никогда не использовали ssh команду, то сначала нужно создать каталог, используя:

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

 

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

touch ~/.ssh/config && chmod 600 ~/.ssh/config

 

 

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

chmod 700 ~/.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 man page.

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

 

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

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

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

ssh andreyex@dev.example.com -p 2322

 

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

~ / .ssh / конфигурации
Host dev
    HostName dev.example.com
    User andreyex
    Port 2322

 

Теперь, если вы введете:

ssh dev

 

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

 

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

Этот пример дает более подробную информацию о шаблонах хостов и приоритетах опций.

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

Host alex
    HostName 192.168.1.10
    User andreyex
    Port 7654
    IdentityFile ~/.ssh/alex.key

Host maxim
    HostName 192.168.10.20

Host denis
    HostName 192.168.10.50

Host *im
    user destroyer

Host * !denis
    LogLevel INFO

Host *
    User root
    Compression yes
  • Если вы введете  ssh alex в ssh, клиент прочтет файл и применит параметры первого совпадения Host alex. Затем он проверит следующие строфы один за другим на соответствие шаблону. Следующий совпадающий Host * !denis означает, что все хосты, кроме, denis он будет применять параметр подключения из этого раздела. Наконец, последнее определение Host * также соответствует, но клиент ssh выберет только опцию Compression, потому что эта опция User уже определена в разделе Host alex. Полный список параметров, используемых в этом случае, выглядит следующим образом:
    HostName 192.168.1.10
    User andreyex
    Port 7654
    IdentityFile ~/.ssh/alex.key
    LogLevel INFO
    Compression yes
  • При работе ssh alex шаблоны соответствия хоста являются: Host maximHost * !denis и Host *. Варианты, используемые в этом случае:
    HostName 192.168.10.20
    LogLevel INFO
    Compression yes
  • Если вы запускаете ssh denis соответствующий узел моделей являются: Host denis и Host *. В этом случае используются следующие параметры:
    HostName 192.168.10.50
    Compression yes
  • Для всех других вариантов соединений, указанных в секциях Host * !denis и Host * будут использоваться.

 

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

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

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

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

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

 

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

ssh -o "User=root" dev

 

Переключатель -Fconfigfile) позволяет указать альтернативный файл конфигурации для каждого пользователя.

Если вы хотите, чтобы ваш ssh-клиент игнорировал все параметры, указанные в вашем конфигурационном файле ssh, вы можете использовать:

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

Заключение

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

1 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Mitai

No more authentication methods to try.

Читайте также

Спасибо!

Теперь редакторы в курсе.