unix - 在 Unix 脚本中将密码传递给 ssh 提示符

标签 unix

我正在编写一个脚本来获取密码和 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 foundinteract:command not find,则表明您将expect代码写入了实际的内容中。 shell 脚本。确保shebang line您的期望脚本实际上包含 #!/path/to/expect 而不是 #!/bin/sh

无论如何,更好的想法是使用带有公钥身份验证的 SSH。没有密码短语的私钥可以轻松编写脚本,并且其安全性不亚于将密码硬编码到脚本中。

关于unix - 在 Unix 脚本中将密码传递给 ssh 提示符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376087/

相关文章:

linux - 如何使用 Ansible playbook 设置 PATH 变量?

UNIX命令递归地改变目录的权限?

linux - 我怎样才能只剪掉一些线,而让其他线不被处理?

regex - 查找和替换以模式开头的行

ubuntu - 使用 Gnuplot 制作多重折线图

C 字符数组指针不是有效语句

c - 关于编写简单shell时的系统调用

bash - 使用 bash 打开和关闭进程

linux - 是否可以使用文本编辑器编辑符号链接(symbolic link)?

windows - 是否有任何资源可以成为 Cygwin "power user"?