【问题标题】:Get command result from SSH/Telnet via another SSH jump server in Python通过 Python 中的另一个 SSH 跳转服务器从 SSH/Telnet 获取命令结果
【发布时间】:2019-05-17 21:09:55
【问题描述】:

我正在向 SSH 或 Telnet 远程主机编写 Python 代码,执行一些命令并获取结果输出。这里我们有一个跳转服务器,因此代码必须与该服务器“连接”,并从该服务器通过 Telnet 或 SSH 连接到远程主机。

我所有的方法在跳转服务器中都可以正常工作,例如我可以在其中获取命令的输出。问题是当我尝试从它远程连接到主机时。

import paramiko

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect('IP', 22, username="user", password="pass")
stdin, stdout, stderr = client.exec_command("command")
for line in stdout:
     print('... ' + line.strip('\n'))
client.close()

使用库 jumpssh 得到相同的结果,而我无法 Telnet 主机。我尝试了以下方法,但得到错误

行政禁止。

from jumpssh import SSHSession

gateway_session = SSHSession('jumpserver','user', password='pass').open()
remote_session = gateway_session.get_remote_session('IP',password='pass')
print(gateway_session.get_cmd_output('command'))

在我工作的最后一家公司,我们从一个支持 Python 脚本的 SSH 客户端获得了许可证,并且在更“文本”的处理中运行良好。

有什么方法可以在 Python 中本地完成相同的任务?

【问题讨论】:

    标签: python ssh telnet paramiko portforwarding


    【解决方案1】:

    SSHSession 正在尝试通过gateway_session 打开direct-tcpip 端口转发通道。

    “管理禁止”是OpenSSH sshd服务器消息,表示direct-tcpip端口转发被禁用。

    要启用端口转发,请在sshd_config 中适当地设置AllowTcpForwardingDisableForwarding 指令。


    如果不能在服务器上启用端口转发,则不能使用 jumpssh 库。

    如果您对服务器有 shell 访问权限,则可以改用ProxyCommand-like 方法。
    Paramiko: nest ssh session to another machine while preserving paramiko functionality (ProxyCommand)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-17
    • 2019-01-12
    • 2011-09-11
    • 1970-01-01
    • 2014-07-09
    • 2021-11-20
    相关资源
    最近更新 更多