gpt4 book ai didi

python - 如何在 Paramiko 中模拟我们自己的 ssh 二进制文件?

转载 作者:行者123 更新时间:2023-12-01 08:56:15 24 4
gpt4 key购买 nike

我有一个命令,例如

ssh -S myAuthServer hostname

正在尝试创建代码片段,但我不确定如何实现 -S 部分我现在拥有的代码:

#!/usr/bin/python

import paramiko
from paramiko import SSHClient, SSHConfig, SSHException

paramiko.util.log_to_file("/tmp/script.log")

def getSSHConnection():
config = SSHConfig()


host='server1'

# setup SSH client
client = SSHClient()
client.load_system_host_keys()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

#Check for proxy settings
proxy = paramiko.ProxyCommand('ssh -S myAuthServer root@%s' % host)
print "proxy:", proxy

#Setup the SSH connection
try:
if (proxy is None):
client.connect(host, port=22, username='root')
else:
print "-> Using paramiko with proxy"
client.connect(host, port=22, username='root', sock=proxy)

except SSHException, ex:
print ex

if client:
stdin, stdout, stderr = client.exec_command('hostname')
tables=stdout.readlines()

print "stdin:", stdin
print "stdout:", stdout
print "stderr:", stderr
print "tables:", tables

return client

getSSHConnection()

我收到的错误是

INF [20181011-11:14:55.131] thr=1   paramiko.hostkeys: Unable to handle key of type 1024
DEB [20181011-11:14:55.161] thr=2 paramiko.transport: starting thread (client mode): 0x4f35fd0L
DEB [20181011-11:14:55.161] thr=2 paramiko.transport: Local version/idstring: SSH-2.0-paramiko_2.2.1
ERR [20181011-11:15:10.242] thr=2 paramiko.transport: Exception: Error reading SSH protocol banner
ERR [20181011-11:15:10.245] thr=2 paramiko.transport: Traceback (most recent call last):
ERR [20181011-11:15:10.246] thr=2 paramiko.transport: File "/Users/root/Library/Python/2.7/lib/python/site-packages/paramiko/transport.py", line 1805, in run
ERR [20181011-11:15:10.246] thr=2 paramiko.transport: self._check_banner()
ERR [20181011-11:15:10.246] thr=2 paramiko.transport: File "/Users/root/Library/Python/2.7/lib/python/site-packages/paramiko/transport.py", line 1957, in _check_banner
ERR [20181011-11:15:10.246] thr=2 paramiko.transport: 'Error reading SSH protocol banner' + str(e)
ERR [20181011-11:15:10.246] thr=2 paramiko.transport: SSHException: Error reading SSH protocol banner
ERR [20181011-11:15:10.246] thr=2 paramiko.transport:

最佳答案

您无法让 Paramiko 使用 oursshbinary 作为 SSH 实现。您甚至无法让它使用 ssh

Paramiko 就是 ssh 本身。

它是相同的(正如您现在所知),就好像您希望 ssh 使用 oursshbinary (这没有任何意义)。您必须让 Paramiko 执行 oursshbinary 的操作。但与 ssh 相比,我们不知道 oursshbinary 做了什么。

<小时/>

对您问题的先前版本的回复:

OpenSSH ssh 客户端的 -S 开关创建一个连接共享,可供 ssh 的其他实例或其他 OpenSSH 工具重用(就像sftp)。

Paramiko 不支持连接共享。实际上这样做没有任何意义。

连接共享对于工具/应用程序很有意义。工具的一个实例创建一个连接,相同或不同工具的其他实例可以重用该连接。

但是在脚本/编程时不需要它。您有 SSH session 实例。您可以在整个脚本/程序中将其用于多种目的。换句话说,您可以共享您的实例。

具体来说,通过 SSH,OpenSSH 连接共享为共享客户端打开单独的 SSH channel 。使用 Paramiko,您还可以通过同一个 SSH 连接打开多个独立的 channel 。这就是 Transport.open_sftp_client (或 SSHClient.open_sftp)、Transport.open_session (SSHClient.invoke_shell)等方法的用途, SSHClient.exec_command) 执行。它们都在内部调用 Transport.open_channel。对于单个 SSH session ,您可以根据需要多次调用所有这些。

关于python - 如何在 Paramiko 中模拟我们自己的 ssh 二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52755375/

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