SSH 隧道是一种安全可靠的数据传输方式,它可以将数据加密并通过 SSH 连接进行转发,从而在不安全的网络环境中实现安全的数据传输。本文将介绍如何在服务器上建立 SSH 隧道,实现数据的转发。
为什么要使用 SSH 隧道?
- 安全数据传输: SSH 隧道通过加密数据传输,保护数据在网络传输过程中的安全。
- 绕过网络限制: SSH 隧道可以绕过防火墙等网络限制,访问被屏蔽的网站或服务。
- 远程访问本地资源: SSH 隧道可以将本地资源转发到远程服务器,实现远程访问本地资源。
建立 SSH 隧道的步骤
- 安装 SSH 客户端和服务器: 确保服务器和客户端都安装了 SSH 客户端和服务器。
- 配置 SSH 连接: 在客户端机器上,使用 SSH 命令连接到服务器,并指定端口转发规则。
- 启动 SSH 隧道: 执行 SSH 命令,启动 SSH 隧道。
- 验证 SSH 隧道: 使用网络工具验证 SSH 隧道是否成功建立。
示例
flowchart LR ssh1<-->ssh2 subgraph B ssh2-->HTTP服务 end subgraph A curl-->ssh1 end
上图B服务有HTTP服务,但是A不能直接访问到B,但是B可以访问到A。
于是通过B连接到A建立一个远程端口1080转发到本地80端口。
ssh -NfR 1080:localhost:80 -p 1022 -i user.key user@server_ip
-N
:表示不执行远程命令,只建立隧道。-f
:表示将 SSH 连接放到后台运行。-R 1080:localhost:80
:将远程 1080 端口转发到本地的 80 端口。-L 1080:localhost:80
:将本地 1080 端口转发到服务器的 80 端口。-i user.key
: 采用证书登录是使用user@server_ip
:服务器用户名和 IP 地址。
之后就可以使用SSH隧道访问本地资源了
# 在A服务器执行以下命令
curl localhost:1080
由于ssh隧道不稳定,需要定期检查 SSH 隧道是否正常运行,并及时更新 SSH 客户端和服务器。
可以通过安装autossh软件,它可以自动检测连接断开并重新建立连接,确保 SSH 连接持续保持。这对于需要长时间保持 SSH 连接的场景非常有用。
autossh -M 3001 -NfR 1080:localhost:80 -o ServerAliveInterval=60 -o ServerAliveCountMax=3 -p 1022 -i user.key user@server_ip
-M
:指定一个端口用于接收连接状态信息。-o
:指定 SSH 选项。