【发布时间】:2017-07-05 19:14:51
【问题描述】:
我正在尝试从脚本执行 ssh-add(目前不关心安全性)。
现在 ssh 提示输入密码,这需要自动化,所以我阅读了一些类似 this 的内容,然后找到了 expect。
现在我做以下事情:
eval `ssh-agent -s`
脚本 tmp.sh 定义为:
#!/usr/bin/expect
spawn ssh-add /root/.ssh/id_rsa
expect "Enter passphrase for /root/.ssh/id_rsa:"
send "my_pass"
interact
./tmp.sh
ssh-add -l
如果 ssh-add 可以工作,它会显示类似
4096 SHA256:wlfP/nhVSWXLcljBOen5GSYZXJGgfi/XJWfZeBwqRsM id_rsa (RSA)
但是我得到了The agent has no identities. 似乎 ssh-agent 失去了它的上下文。
我愿意接受其他解决方案来做到这一点。
【问题讨论】:
-
你是运行
eval `ssh-agent -s`还是eval 'ssh-agent -s'? -
我运行了 eval ` ssh-agent -s ` 但由于格式如此,我希望能够这样写
-
如果您不关心安全性并且愿意将密码短语存储在文件中,您不妨从密钥中完全删除密码短语。
-
仍然期待一个 '\n' ,这是我尝试做的第一件事
-
有时提示输入密码的程序不会从常规标准输入中读取密码,需要模拟 TTY。可能这不是“期望”的默认行为,但我认为它可以选择模拟 TTY。看一下手册页,看看是否有这样的选项
标签: linux bash ssh expect openssh