
Недавно я обнаружил, что с помощью ~/.ssh/config
, я могу сэкономить много нажатий клавиш и автоматизировать длинные командные строки, указав множество значений по умолчанию для каждого хоста. Теперь, когда я заметил, насколько мощным может быть этот инструмент, я задаюсь вопросом, подойдет ли он для другого моего варианта использования.
У меня есть доступ к двум хостам, bastion
и wikispy
. У Bastion внешний IP, wikispy
виден только с внутреннего. Это означает, что обычно для подключения к wikispy
, мне сначала нужно подключиться по ssh bastion
, а затем вызвать ssh wikispy
. Очевидно, что такие вещи, как переадресация портов, будут усложнены таким образом, и это то, чего я хотел бы избежать.
Это приводит к вопросу: могу ли я как-то сделать ~/.ssh/config
запись, которая бы говорила "когда пользователь запрашивает хост с меткой wikispy
, на самом деле подключаться к bastion
, а затем вызывать ssh wikispy
"? Возможно ли будет работать прозрачно, чтобы я мог вызывать такие вещи, как ssh wikispy -L 9999:localhost:9999
и bastion
перенаправлять порт таким образом, чтобы я мог получить к нему доступ изнутри wikispy
?
решение1
Похоже, что это тот случай, когда комбинация ProxyCommand
и nc
оказывается полезной. Вот решение — добавьте следующее к ~/.ssh/config
:
Host bastion
HostName EXTERNAL_IP
User d
Host wikispy
HostName INTERNAL_IP
User d
ProxyCommand ssh bastion nc -q0 %h 22
В соответствии сЭта статья, таким образом можно получить более одного уровня вложенности.