【问题标题】:How to establish remote desktop connection between windows machine using Paramiko, Python如何使用 Paramiko、Python 在 Windows 机器之间建立远程桌面连接
【发布时间】:2018-08-20 18:16:55
【问题描述】:

我正在尝试建立从 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?

此处所述的程序用于建立远程桌面连接。但无法建立连接。

版本:

  • paramiko:2.4.0
  • 蟒蛇:3.6.4

【问题讨论】:

    标签: python windows ssh paramiko remote-desktop


    【解决方案1】:

    您需要服务器上的 SSH 服务器才能与 SSH 连接。

    Windows 默认没有 SSH 服务器,所以你不能连接到 22 端口,除非你安装一些。见https://serverfault.com/q/648855/168875

    您绝对不能使用 SSH 连接到远程桌面端口 2289。


    另外,即使你安装了 SSH 服务器,它也不允许你在 Windows 上执行像 ls 这样的 *nix 命令。它也不会在 Windows 上神奇地创建一些 root 文件夹。

    为此,您还需要在 Windows 上安装一些 *nix-emulation,例如 Windows Subsystem for LinuxCygwin


    总的来说,你的问题就像一个概念上的误解。

    【讨论】:

    • 感谢您的回答。我将按照您指定的步骤进行操作。我已经在使用 Cygwin 来执行 *nix 命令。另外我对 Python 很陌生,刚开始编写简单的代码 sn-ps
    • Cygwin 自带 SSH 服务器。您应该首先提到您拥有 Cygwin。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2013-04-03
    • 1970-01-01
    相关资源
    最近更新 更多