创建: 2024-11-28 11:46
https://scz.617.cn/unix/202411281146.txt
ssh后来新增-J参数,可指定跳板机,相当于内置端口转发。-J可指定多个跳板,用逗号分隔。有了-J,若中间用跳板机,不再需要单用-L搞端口转发,不再需要多条命令组合,可合并成一条命令。Win10自带ssh,也支持-J。
比如这种场景,从A->B->C->D,后三者均为sshd,现在想搞SSH Tunnel,最终出口是D,考虑如下命令:
ssh -CfNgT24 -D ip_a:port_a user_d@ip_d -p port_d -J user_b@ip_b:port_b,user_c@ip_c:port_c
在此过程中根据提示依次输入pass_b、pass_c、pass_d,之后A机侦听"ip_a:port_a",将之当作SOCKS5代理即可。若A是Windows,建议不用-f参数,否则将来无法Ctrl-C打断,只能Process Explorer杀。
若D只支持公私钥登录,考虑如下命令:
ssh -CfNgT24 -D ip_a:port_a -i priv_d user_d@ip_d -p port_d -J user_b@ip_b:port_b,user_c@ip_c:port_c
上述部分参数简介:
-C Requests compression of all data
-f Requests ssh to go to background just before command execution.
-N Do not execute a remote command
-g Allows remote hosts to connect to local forwarded ports
-T Disable pseudo-terminal allocation
-4 Forces ssh to use IPv4 addresses only
现代ssh可能没有"-2"参数了,默认就是协议版本2。
早些年架SSH Tunnel,若有级联、套娃之类的需求,只能多条命令组合,非常臃肿,有-J后,一条命令完事儿。坏事做尽的人,想必第一时刻发现-J登场,TA们有这种强需求。我们善良之辈,没这种强需求,近日ZZ向我提及,才知晓ssh进步如斯。此外,在寡妇王眼皮子底下,SSH Tunnel并非稳定信道,所以上述信息亦非暗示什么。仅仅FYI。