Ключевое слово Host
соответствует хосту taraget, указанному в командной строке.
Таким образом, при использовании следующего файла ssh test-host
будет подключаться к 192.168.0.1
с текущим именем пользователя (то есть: игнорировать конфигурацию, специфичную для IP) - потому что test-host
не соответствует 192.168.0.1
.
Host test-host
Hostname 192.168.0.1
Host 192.168.0.1
User test-user
Чтобы вышеуказанное сработало, как и ожидалось, вы должны установить CanonicalizeHostname=yes
в своем файле конфигурации. Это может быть размещено в глобальном разделе (вверху) или отдельно для каждого хоста, например:
Host test-host
Hostname 192.168.0.1
CanonicalizeHostname yes
Host 192.168.0.1
User test-user
Это приведет к тому, что test-host
будет переписан 192.168.0.1
.
Обратите внимание, что ProxyCommand
имеет особую семантику:
CanonicalizeHostname
Управляет выполнением явной канонизации имени хоста. По умолчанию no
, не выполнять перезапись имен и позволить системному распознавателю обрабатывать все запросы на поиск имени хоста. Если установлено значение yes
, то для соединений , которые не используют ProxyCommand
ssh(1)
будет пытаться канонизировать имя хоста , указанный в командной строке с помощью CanonicalDomains
суффиксы и правила CanonicalizePermittedCNAMEs
Если для CanonicalizeHostname
задано значение always
, канонизация также применяется к прокси-соединениям.
Если эта опция включена, то файлы конфигурации обрабатываются снова, используя новое целевое имя, чтобы выбрать любую новую конфигурацию в соответствующих строках Host
и Match
.
Ниже приведены альтернативы для достижения желаемого поведения:
A
host server1
user myUser1
hostname 192.168.0.1
host server2
user myUser
hostname 192.168.0.2
host server1 server2
# global config here (such as proxycommand, etc)
В
host 192.168.0.1
user myUser1
host 192.168.0.2
user myUser
host 192.168.0.*
# global config here (such as proxycommand, etc)