将密码传递给Unix脚本中的ssh提示符

时间:2013-03-13 02:41:43

标签: unix

我正在编写一个脚本来获取密码和SSH。注意:我不会详细介绍,但安全/加密不是问题 - 硬编码密码就是我想要的。但是,我遇到麻烦,以便Unix脚本用它来回答“密码:”提示。我尝试将它用于管道,它仍然向我询问提示。

我在这里看到了使用期望的答案...我不是shell脚本专家,当我尝试它时我得到错误spawn:找不到命令,交互:找不到命令,发送:命令没有找到。我试过谷歌搜索某种期望下载,什么也没发现......我错过了什么?此脚本应该可以分发给可能安装或不安装外部脚本的人。

我的非工作代码:

#!/bin/bash"
STR="MYPASS"
echo $STR | ssh -t -t user@host

1 个答案:

答案 0 :(得分:3)

根据您阅读的答案,如果您想与ssh的密码提示进行交互,则需要使用expect。这是因为SSH没有从stdin读取密码(你正在管道它),它从tty读取它。

如果您从期望脚本中获得spawn: command not foundinteract: command not found,那么您就可以将预期代码写入实际上是shell脚本的线索。确保您的预期脚本中的shebang line实际包含#!/path/to/expect而不是#!/bin/sh

在任何情况下,很多很多更好的想法是使用SSH和公钥认证。没有密码短语的私钥很容易编写脚本,并且比将密码硬编码到脚本中的安全性要低。