Linux系统SSH隧道与端口转发及内网穿透

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.123
mysql -uuser -ppasswd -h127.0.0.1 -P3307

就可以连接到数据库了

在需要保持连接的情况下,多次重复建立隧道会出现警告,但是不会退出当前进程,结果就会出现多个ssh进程,加上下面这个参数后,会在创建失败后将当前进程自动退出,
适合在crontab中让ssh保持与服务端的连接

-o ExitOnForwardFailure=yes