白话解释 SSH 端口转发原理

SSH 端口转发

SSH 为 Secure Shell 的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。

在实际场景中,由于防火墙的限制,A 与 B 之间不能直接通讯,我们通过 SSH 在两者之间建立隧道(tunneling)来实现通讯。

建立隧道的作用主要有两个:加密 client 和 server 之间的数据传输、突破防火墙的限制。

SSH 命令参数

1
2
3
4
5
6
7
-C  压缩数据传输
-f 后台登录用户名密码
-N 不执行shell[与 -g 合用]
-g 允许打开的端口让远程主机访问
-L 本地端口转发
-R 远程端口转发
-p ssh 端口

SSH 本地端口转发实例

本地端口转发的命令格式:

1
ssh -L <local port>:<remote host>:<remote port> <SSH hostname>

设想一个场景,现有两台机器,本地主机 host_1 和 远程主机 host_2,但是由于防火墙的原因两台机器无法互相通信,而另外一台机器 host_3 却可以同时访问这两台机器,那么我们就可以设法通过 host_3host_1host_2 之间搭一座桥梁,让他们彼此能通信。

比如说,ssh -p 34185 -CNfL 4000:0.0.0.0:4000 lb@x.x.x.x 这条命令,我本地的机器跟 0.0.0.0 的机器网络不通,而 lb@x.x.x.x 是跳板机,它能够连接所有的机器。所以我可以用跳板机作为中间人,在我本机和 0.0.0.0 之间开一个“隧道”,并将端口号设置为 4000,这样 0.0.0.0 4000 端口的所有数据都会被转发到我本机的 4000 端口。

xshell 端口转发设置

也可以通过在 xshell 手动设置端口转发

image

参考资料

  1. 实战 SSH 端口转发
  2. Linux 下 SSH 命令实例指南
  3. ssh 端口转发
觉得还不错?赞助一下~
0%