Linux系统SSH隧道与端口转发及内网穿透
#/usr/bin/sshpass -p dbuser /usr/bin/ssh -N -f -L 3307:10.141.96.240:3306 root@121.41.118.64 -o ExitOnForwardFailure=yes
说明:需要安装sshpass
3307:10.141.96.240:3306// 从10.141.96.240服务器上的3306数据库转发到3307端口root@121.41.118.64// 我本地能直接访问的服务器用户名和服务器ip地址dbuser//数据库用户名
然后就能在本地愉快的玩远程不能直接链接的数据库了
mysql -h127.0.0.1 -udbuser -pdbpass -P3307
举个例子
比如,我们有1台web服务器(内网ip: 192.168.1.101,外网ip:123.123.123.123),1台db服务器(内网ip: 192.168.1.102, 无外网ip)
这时,我想从我本地连接到数据库
ssh -N -f -L 3307:192.168.1.102:3306 123.123.123.123mysql -uuser -ppasswd -h127.0.0.1 -P3307
就可以连接到数据库了
在需要保持连接的情况下,多次重复建立隧道会出现警告,但是不会退出当前进程,结果就会出现多个ssh进程,加上下面这个参数后,会在创建失败后将当前进程自动退出,
适合在crontab中让ssh保持与服务端的连接
-o ExitOnForwardFailure=yes