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

Kum*_*ohn 5 linux ssh sudo bash

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

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

sshpass -f .pass ssh kj@server2 'bash -s' < password.sh
Run Code Online (Sandbox Code Playgroud)

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

password.sh有以下内容。

MYPASS=abcd@123

echo $MYPASS | sudo -kS bash -c 'echo passwd | passwd root --stdin'
Run Code Online (Sandbox Code Playgroud)

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

ewa*_*att 0

诸如$"\`in之类的字符$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"
Run Code Online (Sandbox Code Playgroud)