标题写了半天还是没写明白
不重要,不重要
前景摘要:现网数据库只能通过跳板机连接,虽然现有的sql管理工具支持ssh代理功能,但是代码处理还是比较麻烦的
比如go语言做数据监控,有没有工具我不知道,反正我不会,一直连不上现网数据库
所以准备搞搞代理,代码不行,机器搞定(鲁迅说过:不管黑猫白猫,能帮忙打扫卫生的就是好猫)
进入正题
window环境
可以用putty做代理有现成的链接,你们去尊重原创吧 https://blog.csdn.net/catoop/article/details/81478332
linux环境
ssh -fN -L【本地端口】:【现网ip】:【现网端口】 -p22 【跳板机账号】@【跳板机ip】
f 是说后台进行
N 是不执行远程命令.用于转发端口.
L是正向代理
执行完之后偶尔会报:Cannot assign requested address,不重要(我这人没有求知欲)
执行 ss -ntl
(射手 淦脑瘫了)
如果中间有你设置的端口说明成功了哈
然后直接连接本地的端口进行测试
mysql -h127.0.0.1 -P33061 -uroot -pmasaike
到这里会有个问题,这个代理连接可能会断,很难受,于是加了一个常驻服务,保持通畅连接
在/usr/lib/systemd/system 下面创建 txx_ssh.service 文件
往里面写入
[Unit]
Description=txx_ssh
After=network.target
[Service]
Type=simple
#开始命令
ExecStart=/usr/bin/ssh -fN -L【本地端口】:【现网ip】:【现网端口】 -p22 【跳板机账号】@【跳板机ip】
#重试时间
RestartSec=1s
#重试时间
Restart=always
KillMode=process
User=root
Group=root
[Install]
WantedBy=multi-user.target
保存,然后通过
systemctl status txx_ssh.service
查看服务状态
systemctl start txx_ssh.service
运行这个服务
运行成功后
ps -aux| grep ssh
能看到进程一直在有台运行