2012-04-17 56 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命令。