我正在编写一个脚本来获取密码和 SSH。注意:我不会详细介绍,但安全/加密不是这里的问题——硬编码密码正是我想要的。然而,我在将其通过管道传输以便 Unix 脚本用它回答“password:”提示时遇到了麻烦。我尝试将其插入,但它仍然要求我提供提示。
我在这里看到了使用expect的答案...我不是shell脚本专家,当我尝试它时,我得到了错误spawn:command not find,interact:command not found和send:command not成立。我尝试在谷歌上搜索某种期望下载的内容,但什么也没找到……我错过了什么?该脚本应该可以分发给可能安装或未安装外部脚本的人。
我的非工作代码:
#!/bin/bash"
STR="MYPASS"
echo $STR | ssh -t -t user@host
最佳答案
根据您阅读的答案,您需要使用 expect如果你想与 ssh 的密码提示交互。这是因为 SSH 不会从 stdin(通过管道传输密码的地方)读取密码,而是从 tty 读取密码。
如果您从您的expect脚本中得到spawn:command not found
和interact:command not find
,则表明您将expect代码写入了实际的内容中。 shell 脚本。确保shebang line您的期望脚本实际上包含 #!/path/to/expect
而不是 #!/bin/sh
。
无论如何,更好的想法是使用带有公钥身份验证的 SSH。没有密码短语的私钥可以轻松编写脚本,并且其安全性不亚于将密码硬编码到脚本中。
关于unix - 在 Unix 脚本中将密码传递给 ssh 提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376087/