Skip to content

Latest commit

 

History

History
47 lines (33 loc) · 2.27 KB

端口转发.md

File metadata and controls

47 lines (33 loc) · 2.27 KB

端口转发

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

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

ssh -NL [local_host:]local_port:target_host:target_port tunnel_user@tunnel_host
  • -L 指本地转发,-N 指不进入 tunnel_host(跳板机)主机会话,-f 指后台运行。
  • 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,它是需要被转发。
# 例如,将本地(服务器)的 3389 端口转发到远程的主机中的 8888 端口
ssh -R 0.0.0.0:6666:remote_host:3389 -N root@localhost

动态转发

动态转发是一种 SOCKS 代理,可以将本地的 SOCKS 代理转发到远程主机,然后通过远程主机访问互联网。

ssh -D [LOCAL_HOST:]LOCAL_PORT -N [USER@]REMOTE_HOST