gpt4 book ai didi

python - Python中通过另一个SSH跳转服务器从SSH/Telnet获取命令结果

转载 作者:行者123 更新时间:2023-12-02 06:29:42 24 4
gpt4 key购买 nike

我正在向 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 主机。我尝试了以下方法,但出现错误

Administratively prohibited.

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 中本地完成相同的任务吗?

最佳答案

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

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

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

<小时/>

如果您无法在服务器上启用端口转发,则无法使用jumpssh库。

如果您有服务器的 shell 访问权限,则可以使用 ProxyCommand相反,类似的方法。
请参阅Paramiko: nest ssh session to another machine while preserving paramiko functionality (ProxyCommand) .

关于python - Python中通过另一个SSH跳转服务器从SSH/Telnet获取命令结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816272/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com