引言
包括曾经的我在内的大部分初学者对于 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

Comments NOTHING