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