我正在尝试自动将文件从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,1,2。有些人建议在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/