python - 成功进行 SSH key 身份验证后,SSH 和 SCP 命令无法执行,并显示错误消息 : Win32 error 1114

标签 python linux ssh cygwin mobaxterm

我正在尝试自动将文件从 Odroid XU4 (Linux) 上的 Linux 传输到 Windows 上的计算机。

我可以使用 SSH key 对我的 Windows 计算机进行身份验证,甚至可以从我的 Odroid 访问 MobaXterm 终端,但是当我尝试发送 ssh 或 scp 命令(例如 ssh User@IP [command])scp [file] User@IP:[destination] 我收到以下错误:

1 [main] sshd 11572 C:\WINDOWS\SysWOW64\bsh\usr\sbin\sshd.exe: *** fatal error - unable to load C:\WINDOWS\system32\user32.dll, Win32 error 1114


我不明白这是从哪里来的,原因如下:

  • 它之前工作我尝试使用 Python 管理 SSH 连接和命令。
  • 它可以在我的 Raspberry Pi 上与 Raspbian 配合使用,即使在我开始收到错误之后也是如此。我想也许我无意中修改了我的 cygwin 配置中的某些内容,但事实上我仍然可以通过 RP 连接和发送命令,这说明情况并非如此。

我对制作 SSH/SCP 通信协议(protocol)还很陌生,难道我修改了用于访问远程主机的“ channel ”?有没有人遇到过并克服了这个问题?


我发现的关于此错误的唯一文档与 cygwin 相关,但它们都已有 5 年以上的历史并使用 Windows Server 2003,1 , 2 。有些建议在this之后添加权限,但我已经有了它们,所以我已经没有关于如何调试它的想法了。


我正在下面加入我的配置和此错误的完整回调。以及我在一切崩溃之前在 Python 上尝试过的方法。如果您需要更多信息,请告诉我。

<小时/>

我的设置:

<小时/>

本地主机:Odroid XU4 - Linux

    • Ubuntu LTS 18.04
    • 架构:arm7l
    • OpenSSH_7.6p1
    • Python 3.6

    远程主机:Windows 10 - 64 位

    • MobaXterm
    • Cygwin
    <小时/>

    Python

    <小时/>

    在 python 上,我使用了 Paramikoscp 库。我尝试了以下命令:

    from paramiko import SSHClient 
    from scp import SCPClient
    
    ssh=SSHClient()
    ssh.load_system_host_keys()
    ssh.connect(hostname, username=USER)
    

    这使我成功连接。然后我尝试了两种通过 paramiko 和 scp 发送文件的方法。从那里我开始收到错误,现在,即使我使用终端发送命令,我也会收到上面的错误。

    os.system('scp dir/test.png USER@IP:"/cygdrive/c/Users/USER/Box/"')
    

    和 scp:

    def progress(filename, size, sent):
        sys.stdout.write("%s\'s progress: %.2f%%   \r" % (filename, float(sent)/float(size)*100))
    
    scp = SCPClient(ssh.get_transport(), progress=progress)
    scp.put(local_file, remote_destination)
    
    <小时/>

    完整回调

    <小时/>

    odroid@odroid:~$ scp -v dir/test.png
    USER@IP:"/cygdrive/c/Users/USER/Box/"
    Executing: program /usr/bin/ssh host IP, user USER, command scp -v -t /cygdrive/c/Users/USER/Box/
    OpenSSH_7.6p1 Ubuntu-4ubuntu0.1, OpenSSL 1.0.2n 7 Dec 2017
    debug1: Reading configuration data /etc/ssh/ssh_config
    debug1: /etc/ssh/ssh_config line 19: Applying options for *
    debug1: Connecting to IP [IP] port 22.
    debug1: Connection established.
    debug1: identity file /home/odroid/.ssh/id_rsa type 0
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_rsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_dsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_dsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_ecdsa type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_ecdsa-cert type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_ed25519 type -1
    debug1: key_load_public: No such file or directory
    debug1: identity file /home/odroid/.ssh/id_ed25519-cert type -1
    debug1: Local version string SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.1
    debug1: Remote protocol version 2.0, remote software version OpenSSH_7.1
    debug1: match: OpenSSH_7.1 pat OpenSSH* compat 0x04000000
    debug1: Authenticating to IP:22 as 'USER'
    debug1: SSH2_MSG_KEXINIT sent
    debug1: SSH2_MSG_KEXINIT received
    debug1: kex: algorithm: curve25519-sha256@libssh.org
    debug1: kex: host key algorithm: ecdsa-sha2-nistp256
    debug1: kex: server->client cipher: chacha20-poly1305@openssh.com MAC: compression: none
    debug1: kex: client->server cipher: chacha20-poly1305@openssh.com MAC: compression: none
    debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
    debug1: Server host key: ecdsa-sha2-nistp256
    SHA256: ksdJSQNSèsQ987S8SKHGSJBSQqshdfqf87kjj
    debug1: Host 'IP' is known and matches the ECDSA host key.
    debug1: Found key in /home/odroid/.ssh/known_hosts:1
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_NEWKEYS sent
    debug1: expecting SSH2_MSG_NEWKEYS
    debug1: SSH2_MSG_NEWKEYS received
    debug1: rekey after 134217728 blocks
    debug1: SSH2_MSG_SERVICE_ACCEPT received
    debug1: Authentications that can continue: publickey,password,keyboard-interactive
    debug1: Next authentication method: publickey debug1: Offering public key: RSA
    SHA256:JBSQqshdfqf87kjj/fqf87kjjG2EGCSQqshhDsd /home/odroid/.ssh/id_rsa
    debug1: Server accepts key: pkalg ssh-rsa blen 279
    debug1: Authentication succeeded (publickey).
    Authenticated to IP ([IP]:22).
    debug1: channel 0: new [client-session]
    debug1: Requesting no-more-sessions@openssh.com
    debug1: Entering interactive session.
    debug1: pledge: network
    debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
    debug1: Sending environment.
    debug1: Sending command: scp -v -t /cygdrive/c/Users/USER/
    1 [main] sshd 13224 C:\WINDOWS\SysWOW64\bsh\usr\sbin\sshd.exe: *** fatal error - unable to load C:\WINDOWS\system32\user32.dll, Win32 error 1114 debug1: client_input_channel_req: channel 0 rtype exit-signal reply 0
    debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
    debug1: channel 0: free: client-session, nchannels 1
    debug1: fd 0 clearing O_NONBLOCK
    debug1: fd 1 clearing O_NONBLOCK
    Transferred: sent 2748, received 2932 bytes, in 0.3 seconds
    Bytes per second: sent 9984.6, received 10653.1
    debug1: Exit status -1
    lost connection

    最佳答案

    fatal error 不是由 cygwin sshd 引起的,而是由 W10 引起的,如 错误消息:

    C:\WINDOWS\SysWOW64\bsh\usr\sbin\sshd.exe

    Cygwin安装在

    $ cygpath -w /usr/sbin/sshd.exe
    C:\cygwin64\usr\sbin\sshd.exe
    

    要使用 Cgwin sshd,您需要删除或禁用 W10 服务 并启用 Cygwin。

    https://cygwin.com/ml/cygwin/2018-06/msg00276.html

    关于python - 成功进行 SSH key 身份验证后,SSH 和 SCP 命令无法执行,并显示错误消息 : Win32 error 1114,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53653601/

    相关文章:

    python - 我怎样才能对每 n 个数组值求和并将结果放入一个新数组中?

    java - 在ubuntu终端中以纯文本形式从url读取java类文件(?)

    php - Linux目录权限设置

    r - 如何使用 git2r 通过 ssh 推送 git 存储库?

    ssh - 无法在基本初始化中建立 Vagrant SSH key 使用连接(authorized_keys 权限问题)

    python - 使用 Matplotlib 和 mpld3 在 Web 浏览器上生成多个图形

    Python:递归删除空文件夹

    python - 在Python中,如果auth_user_id不为None,匹配None失败?

    linux - 如果我想实现 RDMA NIC 驱动程序,从哪里开始 - 建议

    ssh - SSH 需要证书吗?