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。