以下代码可以正常工作,以使用paramiko.SSHClient
在IPv4的远程服务器上获取命令执行的输出。但是相同的代码不适用于IPv6服务器。
import paramiko
dssh = paramiko.SSHClient()
dssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
dssh.connect("IPv6_Address", username="root", password="orange")
stdin,stdout,stderr=dssh.exec_command("pwd")
print(stdout.read())
然后我尝试将套接字连接用于IPv6,如下所示
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect((hostname, port))
t = paramiko.Transport(sock)
但是paramiko.Transport
没有exec_command
。
答案 0 :(得分:1)
SSHClient.connect
具有sock
参数:
sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
sock.connect(("IPv6_Address", port))
dssh.connect("IPv6_Address", username="root", password="orange", sock=sock)
旁注:请勿像这样使用AutoAddPolicy
。这样做会失去安全性。
参见Paramiko "Unknown Server" 。