如何在 Python 中通过 SSH 连接和 plink 进行通信?

问题描述

从 Windows(Windows 10,python3.6.3)我想向 Linux 服务器发送一些简单的命令并返回结果。而已。我想保持简单和简短。我没想到这会如此困难,但似乎有一堆有用但不起作用、过时或过于复杂的解决方案。我知道,不应在命令行中传递密码,但我处于封闭环境中,因此我不需要高级加密和公钥/私钥等。我也知道人们强烈建议使用 {{1 }},但由于不同的原因我无法安装。

到目前为止我的学习:

  • Paramiko 不适用于 Windows
  • pxssh 不允许在命令行中发送密码(而 PuTTY 允许)
  • 人们强烈建议使用plink。虽然由于不同的原因我无法安装。
  • Paramiko 基于 Fabric
  • 我尝试了 Paramiko 没有成功

我想,列出对我不起作用的代码片段的所有链接是没有意义的,太多了......这些问题的以下 StackOverflow 答案要么已经过时,要么也没有帮助:

目前,我认为我最接近 ssh.exe 因为在 Windows 命令行中,以下内容

plink

无需手动输入密码或回车确认直接登录,我可以手动输入C:\Users\Downloads\PuTTY\plink.exe -ssh -batch [email protected] -pw abc123 ls等命令

但是,现在我想通过 Python 程序以编程方式执行此操作。 从这里开始:https://stackoverflow.com/a/32615977/7295599(似乎已经过时)。 到目前为止,我得到了以下结果:

uname -a

但是这在 10 秒后超时,没有打印任何结果。

我不确定这是否是 import subprocess ffname_exe = r'C:\Users\Downloads\PuTTY\plink.exe' user='user' server='111.22.33.44' password = 'abc123' plink = '{} -ssh -batch {}@{} -pw {}'.format(ffname_exe,user,server,password) print(plink) proc = subprocess.Popen(plink,stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True) command='uname -a' stdout,stderr = proc.communicate(command.encode(),timeout=10) print(stdout) print(stderr) subprocess 或服务器的问题?实际上,我不受 plink,Windows 上使用 plinkPuTTY 等的任何其他简单解决方案的约束,无需用户交互(输入密码或确认任何内容)和安装ssh.exe 很好。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)