重新认识 SSH – SSH Tunnels 篇

baba 发布于 26 天前 48 次阅读


引言

包括曾经的我在内的大部分初学者对于 SSH 的印象都停留在获取远程机器的终端上。这确实没错,SSH :“The Secure Shell Protocol” 确实是可以且默认是用来干这个的。其实它的用途远不止这个。SSH Tunnels ,tcp 转发,sftp ( 和 ftps 不是一个东西 ),scp ,甚至是 X11 转发(单个窗口的远程桌面你见过吗?)。本文会着重介绍 SSH Tunnels 。

为什么要用 SSH Tunnels

想象一下,你编写了一个 web 应用并且把它部署到了远程的服务器上进行测试,当时该 web 应用需要依赖你本地的数据库,你本地却不方便暴露端口。怎么办,最简单就是通过 SSH Tunnels 转发一下。把本地的数据库端口转发到服务器本地进行调试。
还有一个案例是你想要访问远程服务器上某个不对公网暴露的服务,这时你同样可以通过 SSH Tunnels 转发远程服务的端口到本地。
也许在无意之间你已经使用过这个功能了,比如说 VS code 的 ssh remote 就用到了这个功能。

如何使用 SSH Tunnels

一图流,来自(https://iximiuz.com/en/posts/ssh-tunnels/

记住 -什么是把端口在哪里暴露 参数值是 请求来源:应用地址。
比如本地的端口 8888 到远程服务器,因为端口在远端暴露所以是 -R (remote), 请求来源是 0.0.0.0:8888, 应用地址是 localhost:8888 所以命令是:

ssh -R 0.0.0.0 8888:localhost:8888 username@ssh-server

SSH Tunnels 便利贴

http 代理转发

ssh -R 127.0.0.1:10808:localhost:10808 root@ssh-server

内网穿透

ssh -R 0.0.0.0:80:localhost:8888 -D root@ssh-server
此作者没有提供个人介绍
最后更新于 2025-12-08