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



我可以使用SSH密钥对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:***致命错误-无法加载C:\ WINDOWS \ system32 \ user32.dll,Win32错误1114



我不知道这是从哪里来的,原因如下:


在尝试使用Python管理SSH连接和命令之前,它已经奏效。
即使我开始遇到错误,它也可以在Raspberry Pi上与Raspbian一起使用。我以为可能是我在cygwin配置上无意中修改了某些内容,但事实仍然表明我仍然可以通过RP连接并发送命令。



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


我发现的唯一有关此bug的文档均与cygwin有关,但它们均已使用5年以上,并使用Windows Server 2003,12。有些人建议在this之后添加权限,但是我已经拥有了权限,因此我对如何调试它的想法不多了。


我将加入我的配置以及该错误的完整回调。以及在一切崩溃之前我在Python上所做的尝试。如果您需要更多信息,请与我们联系。



我的设置:



本地主机:Odroid XU4-Linux




Ubuntu LTS 18.04
架构:arm7l
开启SSH_7.6p1
Python 3.6


远程主机:Windows 10-64位


MobaXterm
西格温




蟒蛇



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

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 /”
  执行:程序/ usr / bin / ssh主机IP,用户USER,命令scp -v -t / cygdrive / c / Users / USER / Box /
  OpenSSH_7.6p1 Ubuntu-4ubuntu0.1,OpenSSL 1.0.2n 2017年12月7日
  debug1:读取配置数据/ etc / ssh / ssh_config
  debug1:/ etc / ssh / ssh_config第19行:为*应用选项
  debug1:连接到IP [IP]端口22。
  debug1:建立连接。
  debug1:身份文件/home/odroid/.ssh/id_rsa,类型0
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_rsa-cert类型-1
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_dsa类型-1
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_dsa-cert类型-1
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_ecdsa类型-1
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_ecdsa-cert类型-1
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_ed25519类型-1
  debug1:key_load_public:没有这样的文件或目录
  debug1:身份文件/home/odroid/.ssh/id_ed25519-cert类型-1
  debug1:本地版本字符串SSH-2.0-OpenSSH_7.6p1 Ubuntu-4ubuntu0.1
  debug1:远程协议版本2.0,远程软件版本OpenSSH_7.1
  debug1:匹配:OpenSSH_7.1 pat OpenSSH *兼容0x04000000
  debug1:以“ USER”身份验证IP:22
  debug1:发送了SSH2_MSG_KEXINIT
  debug1:收到SSH2_MSG_KEXINIT
  debug1:kex:算法:[email protected]
  debug1:kex:主机密钥算法:ecdsa-sha2-nistp256
  debug1:kex:服务器->客户端密码:[email protected] MAC:压缩:无
  debug1:kex:客户端->服务器密码:[email protected] MAC:压缩:无
  debug1:需要SSH2_MSG_KEX_ECDH_REPLY
  debug1:服务器主机密钥:ecdsa-sha2-nistp256
  SHA256:ksdJSQNSèsQ987S8SKHGSJBSQqshdfqf87kjj
  debug1:主机“ IP”是已知的,并且与ECDSA主机密钥匹配。
  debug1:在/home/odroid/.ssh/known_hosts:1中找到密钥
  debug1:134217728块后重新生成密钥
  debug1:发送了SSH2_MSG_NEWKEYS
  debug1:需要SSH2_MSG_NEWKEYS
  debug1:收到SSH2_MSG_NEWKEYS
  debug1:134217728块后重新生成密钥
  debug1:收到SSH2_MSG_SERVICE_ACCEPT
  debug1:可以继续进行的身份验证:publickey,password,keyboard-interactive
  debug1:下一个身份验证方法:publickey
  debug1:提供公钥:RSA
  SHA256:JBSQqshdfqf87kjj / fqf87kjjG2EGCSQqshhDsd /home/odroid/.ssh/id_rsa
  debug1:服务器接受密钥:pkalg ssh-rsa blen 279
  debug1:认证成功(公钥)。
  认证为IP([IP]:22)。
  debug1:频道0:新建[client-session]
  debug1:请求[email protected]
  debug1:进入交互式会话。
  debug1:承诺:网络
  debug1:client_input_global_request:rtype [email protected] want_reply 0
  debug1:发送环境。
  debug1:发送命令:scp -v -t / cygdrive / c / Users / USER /
        1 [main] sshd 13224 C:\ WINDOWS \ SysWOW64 \ bsh \ usr \ sbin \ sshd.exe:***致命错误-无法加载C:\ WINDOWS \ system32 \ user32.dll,Win32错误1114
  debug1:client_input_channel_req:通道0 rtype退出信号回复0
  debug1:client_input_channel_req:通道0 rtype [email protected]回复0
  debug1:通道0:空闲:客户端会话,nchannels 1
  debug1:fd 0清除O_NONBLOCK
  debug1:fd 1清除O_NONBLOCK
  传输:发送2748,接收到2932字节,时间为0.3秒
  每秒字节数:发送9984.6,接收10653.1
  debug1:退出状态-1
  失去了连接

最佳答案

致命错误不是由于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错误1114,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53653601/

10-11 08:04