linux · 2020-06-30 0

ssh端口转发

一、命令参数

ssh -L/R <起点 port>:<终点 ip>:<终点 port> <SSH hostname>

SSH连接都是由自己发起,去连接别人,建立一条通道

-L/R参数约定的是这条通道的端口转发的方向

二、本地端口转发

host1是本地主机,host2是远程主机,这两台主机之间无法连通,host1可以连通host3,host3可以连通host2

在host1执行

ssh -L 8080:host2:80 host3

这条命令的意思是,指定SSH绑定本地端口8080,然后指定host3将所有的数据,转发到目标主机host2的80端口

host2的80端口是web服务,在host1执行

curl localhost:8080

三、远程端口转发

host1是本地主机,host2是远程主机,这两台主机之间无法连通,host3可以同时连通host1和host2,但是host1不能连通host3

在host3执行

ssh -R 8080:host2:80 host1

这条命令的意思,让host1监听它自己的8080端口,然后将所有数据经由host3,转发给目标主机host2的80端口
在host1执行

curl localhost:8080

四、参数

  • -N 表示只连接远程主机,不打开远程shell
  • -T 表示不为这个连接分配TTY
  • -f 表示SSH连接成功后,转入后台运行