我需要创建一个bash脚本来远程运行一批机器上的另一个脚本。为此,我通过SSH传递脚本。使用'expect'命令将密码传递给远程运行脚本的SSH
ssh -p$port [email protected]$ip 'bash -s' < /path/to/script/test.sh
我认为它会用我的RSA密钥,但我得到的错误:
"Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)"
我试着用sshpass无济于事。所以我的下一个解决方案是使用expect。我从来没有使用过期望,我很积极,我的语法很不错。
ssh -p$port [email protected]$ip 'bash -s' < /path/to/script/test.sh
/usr/bin/expect <<EOD
expect "password"
send "$spass\n"
send "\n"
EOD
我拥有对所有机器的root权限,任何解决方案都会在代码保留在bash中时执行。请记住,这将通过从父脚本传递的全局变量($ spass,$ ip,$ port等)循环完成。
是您的SSH在每个机器的根的'的.ssh/authorized_keys'文件的公钥呢?我认为在这里拍摄的最好的情况是找出为什么当你尝试使用密钥对进行ssh认证的时候,你会得到这样的结果。 – JNevill
您可以尝试使用'ssh -v {port} root @ {ip}'手动连接,以更好地了解正在发生的事情。 – Mike
解决密钥问题是一个比许多密码提示更好的解决方案。 –