在远程调试中超方便的 ssh 转发命令
Moevis
有时候要在无外网的环境中去部署一个后台程序,并且做一些简单的测试,但是对应的服务器可能只开放了 22 端口等常用端口。
我在测试后台程序的时候,有时想连到服务器的数据库中看一下都很麻烦。然后我就想到可以用 ssh 转发来做。
ssh 转发可以分为远程转发和本地转发以及动态转发。
远程转发
远程转发就是把远程服务器的端口映射到本地,比如我想把服务器的 msyql 端口 3306 映射到本地 3306,那么可以这样:
ssh -NL 3306:127.0.0.1:3306 user@host
其中 N 表示不为这个连接分配 TTY,N 表示不打开远程 Shell,如果想要后台运行,可以加 -f 参数:
ssh -NLf 3306:127.0.0.1:3306 user@host
不过我一般习惯前台运行,这样方便 ctrl+c 关闭。
现在你就可以连接本地端口 3306 访问远程的数据库了,有了各种方法你甚至可以很方便地切换本地程序运行的数据库。
本地转发
本地转发是正好是远程转发反过来,把本地端口映射到远程。比如这样:
ssh -NL 2000:localhost:3000 user@host
上面就把远程的 2000 端口绑定到了本地 3000 端口,这样远程服务器在访问自身的 2000 端口时,实际上是在访问你的 3000 端口(虽然这个使用场景不太多)。
动态转发
映射端口号实在还是有点麻烦,有时候我只是想把远程服务器当个代理,甚至可以结合 proxychains4 做一些很好玩的事情。
比如我想把通过远程服务器转发数据,本地的 9095 端口当做一个数据的传输接口:
ssh -NfD 9095 user@host
然后在 proxychains.conf 中写上
socks5 127.0.0.1 9050
接着就可以通过 proxychains4 让你的命令行流量走远程服务器转发:
proxychains4 wget www.google.com
同时也可以通过 switchyomega 设置让浏览器也能通过远程服务器传输数据,这里就不再多说了。