Во-первых, с вашими настройками, что будет работать, в любом случае потребуется два ssh:
Host foo
LocalForward 10022:bar:22
Host bar
Hostname localhost
Port 10022
LocalForward 33389 rdp:3389
term1$ ssh foo # or use ssh -f -N -o ExitOnForwardFailure=yes foo for background task
term2$ ssh bar
Что вам действительно нужно, так это не RemoteCommand, а ProxyJump, действительно упрощающий вашу конфигурацию, с целью достижения только с:
ssh -L 33389:rdp:3389 -J foo bar
Или эквивалент (только )конфигурация:
Host bar
ProxyJump foo
LocalForward 33389 rdp:3389
Без промежуточного порта.
К сожалению, ProxyJump доступен только начиная с openssh 7.3
Но его легко заменить комбинацией ProxyCommand
/ -W
, которую вы использовали раньше.
ssh -L 33389:rdp:3389 -o 'ProxyCommand=ssh foo -W %h:%p' bar
или как файл конфигурации:
Host bar
ProxyCommand ssh -W %h:%p foo
LocalForward 33389 rdp:3389
По-прежнему работают два ssh :скрытый — это тот, который с параметром ProxyCommand
все еще работает на локальном хосте, выполняющем соединение с использованием пары каналов с основным ssh вместо дополнительного порта tcp. Попытка привлечь промежуточный хост к участию в переадресации портов небезопасна или может привести к конфликту (, другие пользователи foo могут получить доступ к туннелю или использовать тот же порт )и подвержены ошибкам. Концы туннеля должны всегда оставаться на клиентском хосте, если это возможно, где есть полный контроль. Промежуточные туннели должны либо не существовать, либо указывать на следующую точку входа ssh (, которая используется здесь -W
).
Сценарии Awk состоят из пар шаблонов и действий , которые выполняются, когда шаблон оценивается как логическая истина. Таким образом, вы можете использовать
... | awk '$7==2 {print}'
или короче, потому что {print}
— это действие по умолчанию
... | awk '$7==2'