PHP修改linux用户密码passwd


PHP Change linux user password (passwd)

我想通过我的api更改用户密码,但我当前的代码不工作

也许有人能帮我。

$cmd1 = "passwd ".$info['instanceFtpUser'];
$ssh->exec($cmd1."'n");
$ssh->exec($newpass."'n");
$ssh->exec($newpass."'n");
$ssh->disconnect();

btw,我使用phpseclib

你的用例是一个关于phpseclib文档的例子:http://phpseclib.sourceforge.net/ssh/pty.html

正如您在上面看到的,您应该使用write输出到PTY,而不是exec:

$ssh->enablePTY(); 
$cmd1 = "passwd ".$info['instanceFtpUser'];
$ssh->exec($cmd1);
echo $ssh->read('password:'); 
$ssh->write($newpass."'n"); 
echo $ssh->read('password:'); 
$ssh->write($newpass."'n");
$ssh->disconnect(); 

您还可以使用sshpass (https://sourceforge.net/projects/sshpass/),它允许您ssh到远程服务器而无需询问密码。您可以创建一个脚本,SSH到远程服务器并设置新密码。然后可以使用PHP的exec函数调用这个脚本。