Skip to content

Latest commit

 

History

History
39 lines (28 loc) · 1.98 KB

端口转发.md

File metadata and controls

39 lines (28 loc) · 1.98 KB

端口转发

使用 ssh 端口转发,需要一个 ssh 服务器作跳板机,不能在接收端口服务器本身作跳板机。

大概的流程是,所有指向本地端口(local_host)的流量都会转发到 tunnel_host 跳板机,然后通过跳板机转发到 target_host

ssh -NL [local_host:]local_post:target_host:target_port tunnel_user@tunnel_host
  • -L 指本地转发,-N 指不进入 tunnel_host(跳板机)主机会话。
  • local_host:本地主机,在此主机转发,local_host 可以不设置,默认是 127.0.0.1,如果想要外部可以访问,需要改成 0.0.0.0,这个需要在 sshd_config 中将 GatewayPorts 改为 yes,不过设置 local_host 为 0.0.0.0 就可以了。同理,local_port 就是接收转发的端口。
  • target_host:需要转发的主机地址。同理,target_port 是需要转发主机的端口。
  • tunnel_host:就是跳板机,跳板机需要 OpenSSH 服务器。
# 使用 192.168.50.16 作跳板机,将 192.168.50.175 远程桌面端口转发到本机 3389 端口
# 使用 0.0.0.0 保证外部网络也可以访问
ssh -NL 0.0.0.0:3389:192.168.50.175:3389 [email protected]

远程转发

远程转发指的是在远程 SSH 服务器建立的转发规则。

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N [USER@]REMOTE_HOST
  • 在这里必须设定远程主机的 GatewayPorts 可以由外部设备访问转发的端口。
    • REMOTE_PORT:目标端口转发到的端口,可以是本地的端口,或者远程的端口,但要与 REMOTE_HOST 对应
    • DESTINATION:目标地址,可以是 localhost、或者本地的其它设备的地址或者远程计算机,同理 LOCAL_PORT 也需要是对应设备的 IP,它是需要被转发。
# 例如,将远程的主机(服务器)转发到本地的主机中
ssh -R 8888:remote_host:8888 -N root@localhost