Если я сделаю:
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" не "цель"
Они брелок для Mac, я тестировал без него, и это не имеет значения, но думал, что я оставлю это на всякий случай.
-J
естьProxyJump
и нетHostName
.Ответы:
В итоге вы вошли в систему с хостом перехода, потому что в вашей конфигурации явно указано, что вы должны игнорировать указанное вами имя хоста и войти на хост перехода.
HostName
переопределяет имя хоста, указанное в командной строке.Если вы пытаетесь автоматически использовать множество прыжков без необходимости указывать его в командной строке SSH, правильный вариант конфигурации файла
ProxyJump
. Например:Теперь вы можете просто бежать,
ssh target.example.com
и вы пройдете через Jumphost.источник
Проблема заключается в том, что определение Host перехватывает как jumphost.example.com, так и target.example.com как псевдонимы, затем в обоих случаях для HostName устанавливается значение jumphost.example.com.
Я бы предложил сделать псевдонимы после команды Host, а не полные доменные имена, а затем создать запись Host для каждого
источник