ssh端口转发

  1. 本地端口转发
    ssh -L 1234:127.0.0.1:4567 user@host

    这时会在本地也就是执行这条命令的主机,监听1234端口,如果有数据,就转发到远程主机指定的端口,本例子里的远程主机127.0.0.1为ssh连接的主机,也可以是远程主机可以访问到的其他主机, 例如远程主机的ip为192.168.1.100,在此网络内还有主机192.168.1.101,100可以访问101,这时要将本地发往1234端口的数据转发到远程主机网络内的101机器的4567端口,可以这样写:
    ssh -L 1234:192.168.1.101:4567 user@host

验证的话很简单,用nc命令在192.168.1.101监听4567端口 nc -l 4567
在本地 nc localhost 1234,然后发送数据,这时候在101机器上就会收到这些数据, 101发送的数据同样可以在本机侧收到;也就是tcp的socket建立上,就是双向的数据连接;

所以数据流是双向的,由本机侧发起;

  1. 远程端口转发
    ssh -R 1234:127.0.0.1:4567 user@host

    和上面的命令写法一致,只是选项变成了-R,remote的意思,那角度就变了,1234变成了在对端监听,然后转发到本机的4567端口;
    要是这么写:
    ssh -R 1234:127.0.0.1:22 user@host
    也就是在对端,所有发往1234端口的数据,转发给执行该命令主机的22端口,也就是ssh反向隧道,这时候在对端执行 ssh -p 1234 user@localhost即可登录到本机;

    这里同样,只要tcp的连接建立起来,数据流就是双向的,只不过由对端发起;
    不管是本地还是远程转发,其实都是依赖当前建立的ssh隧道,然后根据命令选项,监听端口,收到数据,根据命令里指定的目标地址,进行转发;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值