这可以通过两种不同的方式来完成。例如。在 PTY 模式下使用 exec():
$ssh->exec('sudo useradd newuser');
$ssh->enablePTY();
$ssh->exec('sudo passwd newuser');
$ssh->read('Enter new UNIX password:');
$ssh->write("newpass\n");
$ssh->read('Retype new UNIX password:');
$ssh->write("newpass\n");
直接使用 write():
$ssh->exec('sudo useradd newuser');
$ssh->write("sudo passwd newuser\n");
$ssh->read('Enter new UNIX password:');
$ssh->write("newpass\n");
$ssh->read('Retype new UNIX password:');
$ssh->write("newpass\n");
当我这样做时,我可以使用新帐户通过 SSH 登录。例如。
include('Net/SSH2.php');
$ssh = new Net_SSH2('127.0.0.1', 4022);
echo $ssh->login('newuser', 'newpass') ? 'good login' : 'bad login';
要确保密码确实已成功更改,请在上次发送密码后执行此操作:
$ssh->setTimeout(0.5);
echo $ssh->read();
您还可以通过执行来验证帐户是否已创建cat /etc/passwd
。