在 ssh 配置文件中使用 LocalForward 的 shell 代码

在 ssh 配置文件中使用 LocalForward 的 shell 代码

我的 ssh 配置文件中有此配置,

Host *+*
ProxyCommand ssh $(echo %h | sed -e 's/+[^+]*$//;s/\([^+=]*\)=\([^+]*\)$/\2 -l \1/; s/^\([^+:]*\):\([0-9]*\)+/-p \2 \1+/') -W $(echo %h | sed -e 's/^.*+//; s/:.*$//;'):$(echo %h | sed -e 's/^.*+//; /:/!s/^.*/22/; s/^.*://' ;)

这允许我进行一些基本的主机跳转,例如:

ssh host1+host2 # will ssh into host2 via host1

为什么要对LocalForward命令 ( -L) 执行相同的操作?我尝试过类似的方法,但没有成功

Host host1+*
    user root
    Hostname %h
    ProxyCommand ssh host1 -W %h:%p
    LocalForward 0.0.0.0:8080 $(echo %h | awk -F'+' '{print $2}'):80

提前致谢,

答案1

SSH 配置文件不获取或评估 shell 代码。

您的第一件事起作用的原因是它是由 shell 作为代理命令调用的一部分执行的。

但我想LocalCommand可能会以与调用代理命令类似的方式使用ssh -f -L...。我从来没有这样做过,也没有见过这样做。也可以看看PermitLocalCommand

相关内容