SSH.Net创建用户帐户

时间:2014-08-19 16:09:11

标签: user-accounts ssh.net

我正在尝试使用SSH.NET激活Linux Ubuntu VPS服务器上的用户帐户。

我正在使用以下代码:

public void CreateUser()
{
    var connectionInfo = new Renci.SshNet.PasswordConnectionInfo("serverip", "root", "serverpassword");   
    using (var ssh = new Renci.SshNet.SshClient(connectionInfo))
    {
        string username = tbUser.Text;
        string password = tbPass.Text;
        ssh.Connect();
        var command = ssh.RunCommand("useradd " + username + " -s /bin/false");
        command.Execute();
        command = ssh.RunCommand("passwd " + password);
        command.Execute();
        command = ssh.RunCommand(password);
        command.Execute();
        command = ssh.RunCommand(password);
        command.Execute();
        ssh.Disconnect();
    }
}

手动创建用户时,我会运行useradd username -s /bin/false(为用户提供无ssh访问权限)。然后我会跑passwd username

这是我的错误所在。应用程序在运行passwd + password命令时冻结。我认为这是因为Linux要求您输入密码,而ssh.net认为它正在等待响应。当我刚运行第一个(useradd)命令时,添加了用户并且程序没有冻结。它只是冻结了第二个RunCommand

有没有办法按照我尝试使用SSH.Net的方式创建用户帐户?

谢谢!

1 个答案:

答案 0 :(得分:0)

将双引号更改为单引号对我有用:

ssh.Connect();

var command = ssh.CreateCommand("useradd " + username + " -s /bin/false");
command.Execute();

command = ssh.CreateCommand("echo '" + username + ":" + password + "' >> create.txt");
command.Execute();
command = ssh.CreateCommand("chpasswd < create.txt");
command.Execute();
command = ssh.CreateCommand("rm create.txt");
command.Execute();

ssh.Disconnect();