useradd通过ssh到远程服务器如何提升权限?苏多?

2024-06-02 19:24:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在远程计算机上创建一个用户。我只能通过ssh联系。useradd需要sudo,但是下面的脚本没有提示我输入密码,也没有创建用户。如何提升远程计算机上的权限?你知道吗

#!/usr/bin/python3

import os
import subprocess

HOST="192.168.1.71"

#useradd is linux - adduser is perl
addusertoremote = subprocess.Popen(["ssh", "%s" %HOST, "sudo useradd --disabled-login deletetom"],
                       shell=False,
                       stdout=subprocess.PIPE,
                       stderr=subprocess.PIPE)
resulta = addusertoremote.stdout.readlines()
if resulta == []:
   errora = addusertoremote.stderr.readlines()
   print(errora)
else:
   print(resulta)

Tags: 用户importhost远程is计算机stderrstdout
3条回答

您可以在python中为SSH使用paramiko模块。你知道吗

import paramiko
sshsession = paramiko.SSHClient()
sshsession.set_missing_host_key_policy(paramiko.AutoAddPolicy())
sshsession.connect("hostname",username="username",password="password")

stdin, stdout, stderr = sshsession.exec_command('su')
stdin.write("password for root here")

sshsession.exec_command("sudo useradd  disabled-login deletetom")
#other commands here
sshsession.close()

我对此做了不少研究,得出以下结论。你知道吗

Python和Python内部的Paramiko都没有提升机器权限的方法。你知道吗

必须以root用户身份ssh到要在其上创建用户的计算机上—这样,您就已经是root用户,并且不会生成任何提示。你知道吗

因此,在我的情况下(我将很快进行测试),我将ssh到拥有python脚本作为我自己的机器上,然后su-s并成为root,然后运行python脚本,将拥有root ssh的python脚本到其他机器上以创建作为root的帐户。你知道吗

这对我很管用,不过我不建议这么做。你知道吗

proc = subprocess.Popen(["ssh", "dummy", "-t", "sudo -S touch test.txt"], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT)


proc.stdin.write(password.encode("utf8"));
proc.stdin.write("\r\n".encode("utf8"))

print(proc.communicate())

在我登录到主机后,文件被创建为root。另外,我使用密钥登录,这样ssh就不会询问我的密码,但是sudo会。你知道吗

相关问题 更多 >