SSH 为 Secure Shell 的缩写,是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。
在实际场景中,由于防火墙的限制,A 与 B 之间不能直接通讯,我们通过 SSH 在两者之间建立隧道(tunneling)来实现通讯。
建立隧道的作用主要有两个:加密 client 和 server 之间的数据传输、突破防火墙的限制。
SSH 命令参数
1 | -C 压缩数据传输 |
SSH 本地端口转发实例
本地端口转发的命令格式:
1 | ssh -L <local port>:<remote host>:<remote port> <SSH hostname> |
设想一个场景,现有两台机器,本地主机 host_1
和 远程主机 host_2
,但是由于防火墙的原因两台机器无法互相通信,而另外一台机器 host_3
却可以同时访问这两台机器,那么我们就可以设法通过 host_3
在 host_1
和 host_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 手动设置端口转发