2012-04-17 82 views
2

我需要通过ssh连接到服务器并更改用户的密码,而无需键入sshsudo passwordsudo和chpasswd在一条线上

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

我发现这个命令ssh连接,而无需输入密码和删除用户运行sudo命令:

sshpass -p $admin_password ssh -t [email protected]$server "echo $admin_password | sudo -S /usr/sbin/userdel -r $usr" 

然后我发现改变用户密码命令:

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

Finaly,我想要的东西像这样:

sshpass -p $admin_password ssh -t [email protected]$server "echo $admin_password | sudo -S echo "$usr:$password" | sudo -S /usr/sbin/chpasswd;" 

你有什么想法?

+1

您是否知道命令行参数在Unix系统上是公共的?这意味着每个可以显示进程列表的人都可以读取密码。 – ceving 2012-04-17 14:27:23

回答

1

你的问题实际上需要2件事情。该命令来远程更改密码的用户:

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

为了做到这一点,你可能需要以root身份或sudo的配置,有“passwd文件”不要求你的用户运行密码。

visudo 

编辑文件:

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

这应该让你SSH方式,而不必使用密码来运行passwd命令。