SSH端口转发

548 阅读2分钟

SSH端口转发

SSH 除了登录服务器,还有一大用途,就是作为加密通信的中介,充当两台服务器之间的通信加密跳板,使得原本不加密的通信变成加密通信。这个功能称为端口转发(port forwarding),又称 SSH 隧道(tunnel)。

端口转发有两个主要作用:

(1)将不加密的数据放在 SSH 安全连接里面传输,使得原本不安全的网络服务增加了安全性,比如通过端口转发访问 Telnet、FTP 等明文服务,数据传输就都会加密。

(2)作为数据通信的加密跳板,绕过网络防火墙。

端口转发有三种使用方法:动态转发,本地转发,远程转发。下面逐一介绍。

常用参数

  • -N #告诉SSH客户端,这个连接不需要执行任何命令。仅仅做端口转发
  • -f #告诉SSH客户端在后台运行
  • -L #本地转发
  • -R #远程转发
  • -D #动态转发
  • -C #数据压缩

本地转发

本地转发(local forwarding)指的是,SSH 服务器作为中介的跳板机,建立本地计算机与特定目标网站之间的加密连接。本地转发是在本地计算机的 SSH 客户端建立的转发规则。

它会指定一个本地端口(local-port),所有发向那个端口的请求,都会转发到 SSH 跳板机(tunnel-host),然后 SSH 跳板机作为中介,将收到的请求发到目标服务器(target-host)的目标端口(target-port)。

$ ssh -L local-port:target-host:target-port tunnel-host

上面命令中,-L参数表示本地转发,local-port是本地端口,target-host是你想要访问的目标服务器,target-port是目标服务器的端口,tunnel-host是 SSH 跳板机。

举例 10.10.1.83这台服务器跑了一个postgresql,但是这个postgresql绑定在127.0.0.1回环网卡上,我在我的笔记本上无法访问到这个pg,所以我需要通过端口转发的方式,将我本机的A端口转发到10.10.1.83这台服务器上的5432(pg默认端口)上,从而可以访问我本机上的A端口就可以访问到83上的pg

ssh -N -L 0.0.0.0:6666:127.0.0.1:5432 root@10.10.1.83

image.png

image.png 上面命令的意思是本机绑定在0.0.0.0的6666端口,然后通过(root@10.10.1.83来中转),然后和127.0.0.1:5432绑定,注意这里的127.0.0.1是针对10.10.1.83这台服务器来说的,因为pg绑定在这台机器的127.0.0.1:5432上,所以冒号后面填的是127.0.0.1:5432,当然写成0.0.0.0:5432也可以,这样的意思是绑定10.10.1.83上所有网卡的5432端口。

可以在本机上看到绑定的端口

image.png