【问题标题】:Changing password of a remote Linux system using Python (sftp)使用 Python (sftp) 更改远程 Linux 系统的密码
【发布时间】:2019-07-10 20:00:00
【问题描述】:

看起来很简单,但我搜索了多个资源,但找不到关于如何使用 Python 和 SFTP 更改远程 Linux 系统密码的答案。

def changepwd():
    sftp_client = ssh.open_sftp()
    #change password of root on remote server

有没有可以用来更改密码的内置模块? 提前致谢。


感谢您的所有帮助。这就是我更改“root”密码的方式。

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname, username=Name, password=Pwd)
print "Connection succesfully established ...with %s " % hostname

stdin, stdout, stderr = ssh.exec_command('echo -e "newpasswd\newPasswd" | passwd')
print "stderr: ", stderr.readlines()
print "pwd: ", stdout.readlines()
ssh.close()

【问题讨论】:

  • 您不能使用 SFTP 协议更改密码 – 无论您使用什么 Python 库/模块,或者您是否使用任何其他语言或工具 – SFTP protocol 没有更改密码的能力。 – 您可以使用 SSH 协议或 shell 更改密码。
  • 继@MartinPrikryl 所说:不能使用该协议完成;至少不是以一种被认为安全的方式。 如果您以 root 身份进行 sftp 操作,您可以只替换影子文件,但这几乎是犯罪行为。
  • @MartinPrikryl,谢谢您的 cmets。如果我通过 SSH 来做,有没有可以使用的内置模块?
  • 看来我需要做这样的事情import paramiko ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('<hostname>', username='<username>', key_filename='private-key-file>')

标签: python linux sftp paramiko change-password


【解决方案1】:

您不能使用 SFTP 协议更改密码。

您可以使用 SSH 协议更改密码。但是用于更改密码的 SSH 协议 API 不受最广泛的 SSH 服务器 - OpenSSH 的支持。最广泛使用的 Python SSH 库 - Paramiko 也不支持它。所以这很可能对你不起作用。

所以最后唯一可行的选择是通过 SSH(例如使用 Paramiko)执行相关的 shell 命令(passwdchpasswd)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-16
    • 2018-08-06
    • 2014-05-30
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    相关资源
    最近更新 更多