我正在尝试建立从Windows机器到其他Windows机器的远程桌面连接,并尝试了以下方案 -
import paramiko
ssh = paramiko.SSHClient()
ssh.load_system_host_keys()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('IP',port = 3389, username='un',password='pwd')
print ("Connected to %s" % 'IP')
stdin, stdout, stderr = ssh.exec_command('ls -1 /root|head -n 5')
print ("STDOUT:\n%s\n\nSTDERR:\n%s\n" %( stdout.read(), stderr.read() ))
运行上面的代码后,我会在下面看到错误消息
paramiko.ssh_exception.SSHException:读取SSH协议标志时出错[WinError 10054]远程主机强行关闭现有连接
看着这个问题 - python connecting to ssh An existing connection was forcibly closed by the remote host 但是,我还没有关闭代码中的连接,仍然面临异常。
我查看了一些论坛并了解到,对于Windows机器3389是远程桌面连接的端口,因此在我的代码中使用3389作为端口。
我还使用了port = 22,运行代码并观察了这个异常:
paramiko.ssh_exception.NoValidConnectionsError:[Errno None]无法连接到IP上的端口22
我也尝试了一些 - How to connect to a remote Windows machine to execute commands?
此处所述的程序可以进行远程桌面连接。但无法建立联系。
版本:
答案 0 :(得分:0)
服务器上需要SSH服务器才能与SSH连接。
Windows中默认没有SSH服务器,因此您无法连接到端口22,除非您安装了一些。见https://serverfault.com/q/648855/168875
您绝对无法使用SSH连接到远程桌面端口2289.
此外,即使您安装了SSH服务器,它也不允许您在Windows上执行* {1}}之类的* nix命令。它不会在Windows上神奇地创建一些ls
文件夹。
为此,您还需要在Windows上安装一些* nix-emulation,例如Windows Subsystem for Linux或Cygwin。
总的来说,你的问题就像一个概念上的误解。