通过 Bash 脚本建立永久 SSH 连接?

通过 Bash 脚本建立永久 SSH 连接?

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

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

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

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

有人有更优雅的方法吗?有没有办法使用 Solaris 的 svcadm 来创建连接并始终保持连接?

更新:我发现,如果我添加 sleep X,然后在 X 过期之前创建 MySQL 连接,则 ssh 连接将无限期保持打开状态。但是,这不是一个非常稳定的解决方案。如果我丢失了数据库连接,ssh 连接就会断开,然后我就无法再次连接。

答案1

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

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

答案2

您需要查看 autossh 之类的工具,它可以保持 ssh 隧道正常运行。如果隧道停止运行,它会自动重新创建隧道。

答案3

我认为你可以尝试 ssh-copy-id - 允许轻松传播 SSH pub/priv 密钥对

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

答案4

如果您想避免 ssh、加密、身份验证等开销,您可以使用 netcat(或 nc)执行非常类似的操作。网上有很多教程。如果您从这些教程开始,并且需要更具体的帮助,请告诉我。

相关内容