【发布时间】:2023-03-17 02:15:01
【问题描述】:
我需要创建一个 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,而且我很肯定我的语法已经过时了。
ssh -p$port root@$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 身份验证时会遇到问题。 -
您可以尝试手动与
ssh -v {port} root@{ip}连接,以更好地了解正在发生的事情。 -
修复关键问题是一个比破解密码提示更好的解决方案。
-
@Jnevill 和 Etan 我同意这两个帐户。 SSH 可以在除这里以外的所有其他地方使用,我终其一生都无法弄清楚原因。迈克感谢您的提示。明天上班我得试试看。