本地转发
ssh -L -CTfN 9527:remote_server_ip:23 ssh_server_ip
- L 本地转发模式
- C 压缩数据
- T 禁用模拟终端
- f 后台运行
- N 不执行远程指令, 常用于仅做端口转发
在local_server上开启本地转发模式之后 。ssh_server就会出现2端的TCP链接。然后所有发向9527端口TCP数据会被ssh_server 转发到目标机器的23端口上。整个过程对于用户来说是透明的。就相当于9527和23直接进行TCP链接。
本地转发的精髓在于一开始组网的时候local_server-》ssh_server -》remote_server_ip 这条单向流量是可以导通的,没有防火墙的阻挡的。不然只能gg
远程转发
ssh -R -CTfN 9527 remote_server_ip:23 local_server_ip
- R 远程转发模式
在ssh_server开启远程转发模式之后 。会让ssh_server分别和2端的服务器建立TCP链接。然后所有发向9527端口TCP数据会被ssh_server 转发到目标机器的23端口上。整个过程对于用户来说是透明的。就相当于9527和23直接进行TCP链接
远程转发的精髓在于一开始组网的时候ssh_server -》local_server和ssh_server -》remote_server_ip 这2条线路都是ok的,没有防火墙的阻挡的。不然只能gg
动态转发
ssh -D -CTfN 9527 ssh_server_ip
- D 动态转发模式
动态转发看图其实和本地转发差不多。区别在于从local_server过来的流量。shh_server会判断他的应用层数据协议是啥。从而自动的和目标机器的对应端口建立连接。例如我我上面local_server把http数据发向自己的9527端口之后,会一路到shh_server,然后shh_server发现数据是http 协议之后再连接目标机器的80/443端口。整个过程对用户来说和上面一样完全是透明的。就相当于用户从local_server和remote_server 建立tcp连接来完成web的访问。
【参考】
https://explainshell.com/explain?cmd=ssh±Ngt
https://www.cnblogs.com/keerya/p/7612715.html
https://explainshell.com/explain?cmd=ssh±CTDfN 参数解释