Как использовать и настроить файл конфигурации SSH в Linux

12 set 2022 4 min di lettura
Как использовать и настроить файл конфигурации SSH в Linux
Indice dei contenuti

Введение

Если вы регулярно ежедневно подключаетесь к нескольким удаленным системам через 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

Структура и схемы конфигурационных файлов 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:

man ssh_config

Или посетив справочную страницу ssh_config.

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

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

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

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

ssh [email protected] -p 2322

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

nano ~/.ssh/config
Host dev
 HostName dev.example.it
 User alice
 Port 2322

Теперь, если вы наберете:

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

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
  • Все остальные соединения будут использовать параметры, указанные в разделах Host *!martell и Host *.

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

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

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

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

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

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

ssh -o "User=root" dev

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

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

ssh -F /dev/null [email protected]

Вывод

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

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

Buy me a coffeeBuy me a coffee

Supportaci se ti piacciono i nostri contenuti. Grazie.

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.