Если я сделаю:
ssh -J jumphost.example.com target.example.com
Я сразу же вошел в «цель».
Если я использую этот файл конфигурации ssh, используя более новую конфигурацию перехода ssh-7.3:
Host jump 10.1.*, targets*, *.example.com
HostName jumphost.example.com
IdentitiesOnly yes
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Host *
AddKeysToAgent yes
UseKeychain yes
IdentityFile ~/.ssh/id_rsa
Я в конечном итоге вошел в 'jumphost', а не 'target'
Эти брелки предназначены для Mac, я тестировал без них, и это не имеет значения, но я подумал, что оставлю его на всякий случай.
В конечном итоге вы вошли в систему на хосте перехода, потому что ваша конфигурация явно требует игнорировать указанное вами имя хоста и войти на хост перехода.
HostName jumphost.example.com
HostName
переопределяет имя хоста, указанное в командной строке.
Если вы пытаетесь автоматически использовать узел перехода без необходимости указывать его в командной строке ssh, правильным параметром файла конфигурации является ProxyJump
. Например:
Host everything, behind, jumphost, *.example.com
ProxyJump jumphost.example.com
Теперь ты можешь просто бежать ssh target.example.com
и вы пройдете через jumphost.
Проблема в том, что определение хоста улавливает как jumphost.example.com, так и target.example.com как псевдонимы, а затем устанавливает HostName равным jumphost.example.com в обоих случаях.
Я бы посоветовал сделать псевдонимы после команды Host НЕ полными доменными именами, а затем создать запись Host для каждого