如何通过 SSH 使用 sudo 更改 root 密码?

如何通过 SSH 使用 sudo 更改 root 密码?

我正在尝试使用 sudo 通过 SSH 重置 root 密码,因为直接以 root 身份登录是被禁用的。

我正在使用以下命令重置密码:

sshpass -f .pass ssh kj@server2 'bash -s' < password.sh

运行此程序时,系统提示我输入 sudo 密码,但输入失败。

密码文件有以下内容。

MYPASS=abcd@123

echo $MYPASS | sudo -kS bash -c 'echo passwd | passwd root --stdin'

如何使用 SSH 和 sudo 成功重置密码?

答案1

我可以通过运行以下命令来解决这个问题:

sshpass -f .pass ssh kj@server2 "echo abcd@123 | sudo -kS bash -c 'echo passwd | passwd root --stdin'"

如果有更好的解决方案,我欢迎您的建议。

答案2

您可能可以通过编写如下内容来实现这一点:

ssh user@machine 'sudo passwd' << END
<password>
<password>
END

我还想建议你使用证书而不是密码来登录你的机器,因为这样可以让这样的过程更容易一些

答案3

诸如 之类的字符$"\`可能$MYPASS会被 bash 扩展,因此发送给 sudo 的密码可能不是您期望的那样。

要不使用 bash 扩展来逐字打印字符串,请使用printf '%s\n' "$1"

sshpass -f "$SSH_PASS" ssh -t -l "$SSH_USER" -p "$SSH_PORT" "$SERVER" \
    "printf '%s\n' \"root:$PASSWORD\" | sudo chpasswd -c SHA512"

相关内容