我需要创建一个 bash 脚本,可以远程在一批机器上运行另一个脚本。为了实现这个目的,我通过 SSH 传递了一个脚本。
ssh -p$port root@$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。我以前从未使用过expect,我确定我的语法有很大的偏差。
ssh -p$port root@$ip 'bash -s' < /path/to/script/test.sh
/usr/bin/expect <<EOD
expect "password"
send "$spass\n"
send "\n"
EOD
我可以访问所有机器的根权限,只要代码仍在bash中,任何解决方案都可以。请记住,这将在循环中完成,并传递全局变量($ spass,$ ip,$ port等)从父脚本。
.ssh/authorized_keys
文件中?我认为最好的情况是找出为什么在尝试使用密钥对进行ssh身份验证时会遇到问题。 - JNevillssh -v {port} root@{ip}
以更好地了解正在发生的情况。 - Mike