我正在尝试使用 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"