利用ssh 隧道代理服务器本地端口,实现远程连接服务器本地数据库

发布时间 2023-08-11 15:01:15作者: clever-cat

ssh隧道代理

写这篇文章的原因是因为在开发中,遇到了需要对线上服务器数据进行调试,为方便在本地使用图形化工具。

mysql,redis总所周知是不允许远程连接数据库的,我们就无法在本地对服务器数据进行调试。所以就可以利用ssh 工具进行隧道代理本地调试数据。

废话不多说直接开干,上代码

windows vbs脚本版

windows10 需要安装ssh才能使用
windows11 自带ssh无需安装

Set WshShell = WScript.CreateObject("WScript.Shell")

' 激活控制台窗口(假设窗口标题为 "Command Prompt",可以根据实际情况修改)
WshShell.Run "cmd.exe"

' 等待一段时间,以确保控制台窗口已激活
WScript.Sleep 1000

' 输入字符串
WshShell.SendKeys "ssh -L 0.0.0.0:33356:localhost:3306 root@10.10.26.232 -o ServerAliveInterval=10"

' 模拟回车键
WshShell.SendKeys "{ENTER}"

' 等待一段时间,以等待命令执行完成 服务器密码
WScript.Sleep 1000
WshShell.SendKeys "123456"

WshShell.SendKeys "{ENTER}"

' 关闭控制台窗口(示例中使用 Alt + F4 快捷键)
' WshShell.SendKeys "%{F4}"

解读关键代码

ssh -L 0.0.0.0:33356:localhost:3306 root@10.0.0.201 -o ServerAliveInterval=10

ssh -L 这里是本地ip建议写0.0.0.0或者127.0.0.1:本地端口只要不被占用的都行:服务器的IP一般建议写localhost:你要使用的服务器上服务端口号例如mysql的3306 root@这里是服务器的ip例如10.0.0.201 -o ServerAliveInterval=10
ssh 命令除了登陆外还有三种代理功能:

ssh -L 正向代理(-L):相当于 iptable 的 port forwarding
SSH -R 反向代理(-R):相当于 frp 或者 ngrok
SSH -D socks5 代理(-D):相当于 ss/ssr

linux 系统使用

终端打开直接执行命令
ssh -L 0.0.0.0:33356:localhost:3306 root@10.0.0.201 -o ServerAliveInterval=10
输入密码

linxu想要使用开启自动执行命令

#路径 exp:root用户
cat /root/.bash_profile
#路径 exp:zhangs用户
ssh -L 0.0.0.0:33356:localhost:3306 root@10.0.0.201 -o ServerAliveInterval=10
# 直接代码写进行去就行,前提是吧ssh公钥放入到目标服务器