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

在Unix脚本中将密码传递给ssh提示符,unix,Unix,我正在编写一个脚本来获取密码并使用它进行SSH。注意:我不会详细介绍,但这里的安全性/加密不是问题——硬编码密码是我想要的。但是,我在管道中遇到了问题,因此Unix脚本无法用它回答“password:”提示。我试着把它插进去,但它还是要我提示 我在这里看到了使用expect的答案…我不是一个shell脚本专家,当我尝试它时,我得到了以下错误:spawn:command not found、interact:command not found和send:command not found。我试着在

我正在编写一个脚本来获取密码并使用它进行SSH。注意:我不会详细介绍,但这里的安全性/加密不是问题——硬编码密码是我想要的。但是,我在管道中遇到了问题,因此Unix脚本无法用它回答“password:”提示。我试着把它插进去,但它还是要我提示

我在这里看到了使用expect的答案…我不是一个shell脚本专家,当我尝试它时,我得到了以下错误:spawn:command not found、interact:command not found和send:command not found。我试着在谷歌上搜索一些期待下载的东西,但什么也没找到……我错过了什么?此脚本应可分发给可能安装或未安装外部脚本的用户

我的非工作代码:

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

根据您阅读的答案,如果要与ssh的密码提示符交互,则需要使用。这是因为SSH不从stdin(您正在管道传输它的地方)读取密码,而是从tty读取密码

如果您从expect脚本中获得
spawn:command not found
interact:command not found
,这就是您将expect代码编写到实际的shell脚本中的线索。确保expect脚本上的脚本实际包含
#/路径/到/预期
而不是
#/bin/sh

在任何情况下,一个非常好的主意是使用SSH和公钥身份验证。没有密码短语的私钥很容易编写脚本,而且它的安全性不亚于将密码硬编码到脚本中