建立 SSH 隧道然后运行另一个使用该隧道的程序的脚本

建立 SSH 隧道然后运行另一个使用该隧道的程序的脚本

我正在运行一个 GUI 应用程序 (Gnucash),它通过安全 shell 会话连接到远程 Postgres 数据库。我可以使用 SSH -L 命令来隧道本地端口,然后单独运行 Gnucash,这样就可以正常工作。

我想做的是使用一个 shell 脚本来设置隧道,然后调用 Gnucash。这可能吗?如果可以,我该怎么做?目前,我在 2 个单独的终端窗口中运行以下命令:

ssh -L 5433:127.0.0.1:19097[电子邮件保护] gnucash postgres://gnucash@localhost:5433/gnucash_db

如果我只是将两行都放入 shell 脚本中,第一行就会将我带入远程 shell,而第二行直到我退出远程 shell 才会执行。

TIA,罗布·希尔斯

答案1

使用让 ssh 在建立隧道后自动进入后台,然后您的脚本就可以继续执行下一个命令。我建议您使用 来结束脚本,这将关闭终端并终止进程;否则您必须明确终止它,否则如果/当服务器超时时它将退出。ssh -fNT -L 5433:127.0.0.1:19097 [email protected]exitssh

相关内容