sudo和chpasswd在一条线上

时间:2012-04-17 13:29:29

标签: bash ssh passwords sudo

我需要通过ssh连接到服务器并更改用户密码,而无需输入sshsudo password

我找到了一些例子,但我无法完成一个命令。

我发现此命令用于ssh连接而不输入密码并为删除用户运行sudo命令:

sshpass -p $admin_password ssh -t $admin@$server "echo $admin_password | sudo -S /usr/sbin/userdel -r $usr"

然后我找到了更改用户密码的命令:

echo "$usr:$password" | sudo -S /usr/sbin/chpasswd;

最后,我想要这样的事情:

sshpass -p $admin_password ssh -t $admin@$server "echo $admin_password | sudo -S echo "$usr:$password" | sudo -S /usr/sbin/chpasswd;"

你有什么想法吗?

1 个答案:

答案 0 :(得分:1)

你的问题实际上需要两件事。用于远程更改用户密码的命令:

ssh remoteserver 'echo -e "passwdofuser\npasswdofuser" | passwd username'

为了做到这一点,你可能需要是root用户,或者在sudo配置中,“passwd”不需要密码供你的用户运行。

visudo

编辑文件:

Cmnd_Alias      MYPASSWD = /usr/bin/passwd
yourusername ALL = NOPASSWD: MYPASSWD

这应该允许你ssh in而不必使用密码来运行passwd命令。