通过Bash脚本永久SSH连接?

我有两个OpenSolaris服务器。 远程服务器有一个MySQL数据库。 MySQLconfiguration了skip-networking; 所以,我不能通过使用主机名和端口来访问第一台服务器的数据库。

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

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

我创build了一个bash脚本来创build连接。 然而,它只是连接,结束脚本,并失去了SSH连接。 如果我修改脚本以在远程服务器上运行命令并执行睡眠命令,则它将保持连接X秒。 然后我可以连接MySQL。 但是,我肯定会在X秒后失去联系。

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

更新:我发现,如果我添加睡眠X,然后在X过期之前创buildMySQL连接,SSH连接保持无限期。 但是,这不是一个非常稳定的解决scheme。 如果我失去了数据库连接,ssh连接就会死掉,然后我将被卡住而不能再次连接。

你需要-N选项OpenSSH。 例如:

ssh -N -L 3350:localhost:3306 user@server & 

你想看看像autossh这样的工具,它使ssh隧道工作。 如果它死了,它会自动重新创build它。

我想你可以尝试ssh-copy-id – 允许SSH pub / priv密钥对的简单传播

 ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected] 

或者,也许rstunnel,几乎相同的autossh – > http://sourceforge.net/projects/rstunnel/

如果你想避免SSH,encryption,身份validation等开销,你可以做一些非常相似的netcat(或NC)。 网上有很多教程。 如果你从他们开始,需要更多的具体帮助,让我知道。