【发布时间】:2017-01-30 21:33:11
【问题描述】:
我知道与此相关的风险,但我仍然想这样做。
我尝试过其他答案,但没有成功。
基本上我只想在启动时打开那个 ssh 隧道。所以我正在制作一个脚本,我可以将其作为系统启动时的 cron 作业。
到目前为止,脚本如下所示:
#!/usr/bin/expect -f
spawn java -jar client.jar </dev/null &>/dev/null &
spawn ssh -fN -i /home/my_user/.ssh/id_rsa -R 20001:localhost:22 other_user@other_host
expect "*passphrase*"
send "my passphrase\r"
我得到的结果是,Java 进程都没有继续运行(如果它甚至完全启动),SSH 连接也没有保持活动状态(如果它甚至完全启动并且密码短语正确插入send 命令)。
我在这里做错了什么?
谢谢!
【问题讨论】:
-
您为什么同时使用密钥和密码?如果您在终端中单独键入
ssh命令会发生什么? -
它会询问我的密码。密码与私钥相关联
-
如果您愿意编写脚本并在脚本中硬编码密码,为什么不以未加密的形式存储密钥?您也可以为此创建一个专用密钥,以防您为其他主机使用相同的密钥。
-
@PedroD : 在最后一行添加
expect eof。 -
酷,脚本完成后 ssh 连接继续工作。但是没有创建java进程。