SSH隧道的三种用法

1.195k 字  |  4 分钟

SSH 本身就具备强大的隧道功能,无需额外软件。通过 SSH 隧道,你可以安全地将本地端口、远程端口或动态端口转发到其他机器。根据不同的需求,主要有三种类型:

1. 本地端口转发 (Local Port Forwarding)

用途: 将本地端口的流量转发到远程机器的某个端口。这最常用于访问防火墙后的服务。

场景: 假设你的本地机器(A)想访问远程服务器(B)上运行在 localhost:8080 的一个 Web 服务,但防火墙阻止了直接访问。

命令:

Bash

ssh -L 9090:localhost:8080 user@remote_server_ip

ssh: 启动 SSH 客户端。

-L: 指定本地端口转发。

9090: 本地机器上的端口。

localhost:8080: 远程服务器上的目标 IP 和端口。

user@remote_server_ip: 远程服务器的登录信息。

效果: 运行这条命令后,你可以直接在本地浏览器访问 http://localhost:9090,它会自动通过 SSH 隧道将请求转发到远程服务器的 8080 端口。

2. 远程端口转发 (Remote Port Forwarding)

用途: 将远程机器的某个端口流量转发到本地机器的端口。这可以用来实现简单的内网穿透。

场景: 你的本地机器(A)在内网,想让公网服务器(B)的用户能够访问你本地运行在 localhost:8000 的服务。

命令:

Bash

ssh -R 8000:localhost:8000 user@remote_server_ip

ssh: 启动 SSH 客户端。

-R: 指定远程端口转发。

8000: 远程服务器上绑定的端口。

localhost:8000: 本地机器上的目标 IP 和端口。

user@remote_server_ip: 远程服务器的登录信息。

效果: 运行这条命令后,远程服务器上的用户可以访问 remote_server_ip:8000,请求会通过 SSH 隧道转发到你本地的 8000 端口。

3. 动态端口转发 (Dynamic Port Forwarding)

用途: 将本地机器变成一个 SOCKS5 代理服务器,所有流量都通过 SSH 隧道转发。这可以用来突破网络限制。

场景: 你想让本地所有网络请求都通过远程服务器转发,以访问被限制的网站。

命令:

Bash

ssh -D 1080 user@remote_server_ip

ssh: 启动 SSH 客户端。

-D: 指定动态端口转发。

1080: 本地 SOCKS 代理服务器的端口。

user@remote_server_ip: 远程服务器的登录信息。

效果: 运行后,你需要将本地应用的代理设置指向 localhost:1080,所有流量都会通过远程服务器进行转发。这比本地端口转发更灵活,因为它不限于特定的应用或端口。

总的来说,SSH 隧道本身就是一个强大的工具,能满足大部分端口转发和代理需求。如果你需要更复杂的内网穿透,例如多用户管理、Web 管理界面等,那么 FRP、NPS 等专用工具会更适合。

评论(没有评论)

谢谢你请我喝咖啡~

扫码打赏,支持一下