【问题标题】:PHP Change linux user password (passwd)PHP 更改 linux 用户密码 (passwd)
【发布时间】:2016-10-08 19:07:30
【问题描述】:

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

也许有人可以帮助我。

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

顺便说一句,我正在使用 phpseclib

【问题讨论】:

  • 您只需要一个exec 调用,密码需要作为输入传递给passwd 命令,而不是作为单独的命令发送。

标签: php linux


【解决方案1】:

您的用例是 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(); 

【讨论】:

  • 第二个密码错误。输入新的 UNIX 密码:TrFBomqf0UTB root@n3525325325252352523:~# TrFBomqf0UTB -bash: TrFBomqf0UTB: 找不到命令。
  • 如果您的 passwd 不强制您重新输入新密码(我从上面的跟踪中了解到这种情况发生在您身上),您可以在我的示例中省略第二个 read 和第二个 write以上。
【解决方案2】:

您也可以使用 sshpass (https://sourceforge.net/projects/sshpass/),它让您无需输入密码即可通过 ssh 连接到远程服务器。您可以创建一个 ssh 到远程服务器并设置新密码的脚本。然后您可以使用 php exec 函数调用此脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多