通过 Bash 脚本的永久 SSH 连接?

Jus*_*oel 3 mysql solaris ssh opensolaris

我有两个 OpenSolaris 服务器。远程服务器有一个 MySQL 数据库。MySQL配置了skip-networking;因此,我无法仅通过使用主机名和端口从第一台服务器访问该数据库。

我必须有一个 ssh 隧道设置才能从本地服务器连接到 MySQL。我可以用一个简单的: ssh -L 3350:localhost:3306 user@server 和 SSH 密钥来做到这一点。它工作得很好。

但是,我需要永久连接,并且最好在启动时运行。

我创建了一个小 bash 脚本来创建连接。但是,它只是连接、结束脚本并丢失 ssh 连接。如果我修改脚本以在远程服务器上运行命令和睡眠命令,它将保持连接 X 秒。然后我可以连接到 MySQL。但是,我肯定会在 X 秒后失去连接。

有没有人有更优雅的方法来做到这一点的建议?有没有办法使用 Solaris 的 svcadm 来创建连接并始终保持它?

更新:我发现如果我添加 sleep X 然后在 X 到期之前创建 MySQL 连接,ssh 连接会无限期地保持。但是,这不是一个非常稳定的解决方案。如果我失去了数据库连接,ssh 连接就会死掉,然后我就会被卡住而无法再次连接。

Joe*_*Joe 6

您需要 OpenSSH 的 -N 选项。例如:

ssh -N -L 3350:localhost:3306 user@server &
Run Code Online (Sandbox Code Playgroud)

  • 更好的选择是使用“ssh -T -f -N -L 3350:localhost:3306 user@server”,SSH 不会使用 tty 并立即进入后台。要使选项起作用,您将需要公钥身份验证,因为您没有任何机会输入密码 (3认同)