用户通过SSH添加到远程服务器 - 如何提升权限?



我想在远程计算机上创建一个用户。 我只能通过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)

你可以在python中使用paramiko模块进行SSH。

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()

这对我有用,尽管我不建议这样做。

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("rn".encode("utf8"))
print(proc.communicate())

登录主机后,该文件已创建为root。另外,我正在使用密钥登录,因此ssh不会要求我的密码,但sudo会。

我对此做了相当多的研究,得出了以下结论。

无论是 Python 还是 python 内部的 Paramiko 都没有提升所到达机器权限的方法。

必须在 AS 根中对要在其上创建用户的机器进行 ssh - 这样您已经是 root 并且不会生成任何提示。

因此,就我而言(我将很快进行测试(,我会ssh进入以python脚本为我自己的机器,然后su -s并成为root并运行将具有root的python脚本ssh到其他机器中以root身份创建帐户。

最新更新