Сегодня обнаружил в OpenSSH поведение, показавшееся мне контринтуритивным.
Допустим, у нас есть хост b, с которого есть доступ к хосту c. При этом c не резолвится в DNS поэтому на b лежит ${HOME}/.ssh/config, в котором написано
Host c
Hostname 10.3.3.1
Если мы пытаеся зайти с хоста a (с котрого виден b, имеющий публичный IP, но не видна напрямую сетка 10.3.3.0/24) командой
ssh -J b c
То ничего хорошего у нас не получится. Не найдет оно C.
А вот если на a в .ssh/config прописать
Host c
ProxyJump b
Hostname 10.3.3.1
То все получится.
Это в общем вполне логично, если считать что -J host это шорткат для -W host:22. Но как-то немножко неожиданно. Почему-то есетственным кажется поведение, что если ты указываешь -J host, то все дальнейшее устроено так, как будто бы ты зашел на этот хост интерактивной сессией и дальше ходил бы уже оттуда по ssh.
Еще мы тут недавно при тестировании pg_probackup наступили на превышении лимита MaxStartups в ssh. Вообще этот лимит неожидоанно низкий, и вляпаться в него в автоматизированных тестах на полусотне платформ очень легко.
У jenkins конечно, для этого всякие gracetime есть, но...
X-Post from
DW