如何从 bash 脚本启动多个 ssh 会话

问题描述

在家办公,我需要每天早上启动一些 ssh 隧道到我的公司,以便通过端口转发到我的桌面来获取我的内部工作场所应用程序网站。 每个 ssh 调用都在他自己的脚本中,每个 ssh 隧道都需要一个关键短语来解锁该连接所需的 ssh 密钥。

我对每天早上手动启动这些脚本(启动 ssh 隧道)感到厌烦,我想一次启动它们,并且只输入一次关键短语。

喜欢

!/bin/sh
./start-tunnel-app1.sh &
./start-tunnel-app2.sh &
...
./start-tunnel-appx.sh

和 start-tunnel-app1.sh 类似

!/bin/sh
~/.ssh/mykeyfile -L 8000:companyserver1:8000 mylogin@companygateway.com

使用密码保护的密钥文件

如何正确地做这样的事情?我只需要启动一个脚本并输入一次密码就可以像这样启动多个 ssh 会话?

非常感谢

解决方法

正如 this Q/A 中提到的那样,使用 -f 而不是 & 会更好。

并且在启动脚本之前启动 ssh-agent 以创建 ssh 的无密码启动

,

您可以通过身份验证建立第一个 ssh 连接,并将此开放连接用于其他 ssh 会话(无需身份验证)。请参阅 man ssh 和选项 ControlMaster 。