通过 Python 中的另一个 SSH 跳转服务器从 SSH/Telnet 获取命令结果
Get command result from SSH/Telnet via another SSH jump server in Python
我正在编写 Python 代码到 SSH 或 Telnet 远程主机,执行一些命令并获得结果输出。这里我们有一个跳转服务器,所以代码必须是 "connected" 这个服务器,然后从它,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 客户端的许可,并且在更 "textual" 的处理中工作得很好。
有什么方法可以在 Python 中本地完成相同的任务?
SSHSession
正在尝试通过 gateway_session
打开 direct-tcpip
端口转发通道。
"administratively prohibited" 是 OpenSSH sshd
服务器消息,表明 direct-tcpip
端口转发已禁用。
要启用端口转发,请在 sshd_config
中适当地设置 AllowTcpForwarding
and DisableForwarding
指令。
如果您无法在服务器上启用端口转发,则无法使用 jumpssh 库。
如果您可以 shell 访问服务器,您可以使用类似 ProxyCommand
的方法。
参见 。
我正在编写 Python 代码到 SSH 或 Telnet 远程主机,执行一些命令并获得结果输出。这里我们有一个跳转服务器,所以代码必须是 "connected" 这个服务器,然后从它,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 客户端的许可,并且在更 "textual" 的处理中工作得很好。
有什么方法可以在 Python 中本地完成相同的任务?
SSHSession
正在尝试通过 gateway_session
打开 direct-tcpip
端口转发通道。
"administratively prohibited" 是 OpenSSH sshd
服务器消息,表明 direct-tcpip
端口转发已禁用。
要启用端口转发,请在 sshd_config
中适当地设置 AllowTcpForwarding
and DisableForwarding
指令。
如果您无法在服务器上启用端口转发,则无法使用 jumpssh 库。
如果您可以 shell 访问服务器,您可以使用类似 ProxyCommand
的方法。
参见