以下代码可以正常工作,可以使用
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
。
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
。这样做你会失去安全感。