【问题标题】:Adding user in ubuntu using PHP使用 PHP 在 ubuntu 中添加用户
【发布时间】:2014-06-21 14:25:35
【问题描述】:

我正在尝试使用来自另一台服务器的 PHP 将用户添加到我的 Ubuntu 虚拟机 (Microsoft Azure)。

这是我的代码。

PHP 代码:

//including phpseclib
include('Net/SSH2.php');

//Username and Password from form
$username = $_POST['user'];
$password = $_POST['pass'];

//connecting to azure vm using ssh
$ssh = new Net_SSH2('myservername.cloudapp.net:22');
$ssh->login('myuserid', 'mypassword') or die("Login failed");
$ssh->getServerPublicHostKey();
$cmd = "sudo useradd -d /home/$username -p $(perl -e'print crypt(\"$password\", \"cu\")') $username";
$cmdr = $ssh->exec($cmd);

用户创建成功,但是当我使用新创建的用户名和密码使用 putty 登录服务器时,它显示“访问被拒绝”

请帮忙,我哪里出错了?

【问题讨论】:

  • 您对执行此代码的文件有什么权限?
  • php 文件在我的本地主机上...如果您查看我的代码...我正在使用我的管理员 ID 登录到我的 azure 服务器...
  • 文件权限不是问题...即使我登录到我的root帐户并直接在putty的终端中运行命令...我遇到了同样的问题...用户是已创建但我无法登录..
  • 我还注意到,如果我通过运行“$passwd username”手动更改密码,那么我可以登录...所以我最好的猜测是“-p”中有问题useradd 命令的参数...

标签: php linux ubuntu azure ubuntu-12.04


【解决方案1】:

允许用户使用第二条命令登录

 $cmd = "sudo useradd -d /home/$username -p $(perl -e'print crypt(\"$password\", \"cu\")') $username";
 $cmdr = $ssh->exec($cmd);
 $cmd =  "sudo passwd -u {$username}";
 $cmdr = $ssh->exec($cmd);

【讨论】:

  • 我仍然遇到同样的问题..“拒绝访问”
【解决方案2】:

完成了……!!

这是最终的 PHP 代码

include('Net/SSH2.php');

//Username and Password from form
$username = $_POST['user'];
$password = $_POST['pass'];
$salt = "12345678" //any random 8 digit

//connecting to azure vm using ssh
$ssh = new Net_SSH2('myservername.cloudapp.net:22');
$ssh->login('myuserid', 'mypassword') or die("Login failed");
$ssh->getServerPublicHostKey();
$cmd = "sudo useradd -m -p $(mkpasswd -m sha-512 $password $salt) $username";
$cmdr = $ssh->exec($cmd);

解决了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 2016-02-02
    相关资源
    最近更新 更多