我意识到与此相关的风险,但是我仍然想要这样做。如何使用expect来自动输入SSH密码?
我试图遵循其他答案,但没有成功。
基本上所有我想要的是在启动时打开该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 [email protected]_host
expect "*passphrase*"
send "my passphrase\r"
结果我这个得到的是,无论是Java进程保持运行(如果在所有甚至推出),并且无论是SSH连接保持活着(如果它甚至启动并且密码由send
命令正确插入)。
我在这里做错了什么?
谢谢!
为什么你同时使用密钥和密码?如果你自己在终端输入'ssh'命令,会发生什么? – redneb
它问我密码。密码与私钥关联 – PedroD
如果您愿意编写脚本并在脚本中对密码进行硬编码,为什么不以未加密的形式存储密钥?如果您为其他主机使用相同的密钥,您也可以为此创建一个专用密钥。 – redneb