最近在使用Goland进行远程调试时,因为配置要使用到rsync将源代码文件同步到服务器,避免每次进行全量复制,但是在配置过程中遇到错误,提示:rsync: connection unexpectedly closed (0 bytes received so far) [sender] 。经过一番调试,最后终于得以解决,以下记录问题的解决过程。
1.配置目标服务器的rsync遇到错误
错误提示:
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=
3.1.2]
rsync: safe_read failed to read 4 bytes [Receiver]: Connection reset by peer (10
4)
rsync error: error in rsync protocol data stream (code 12) at io.c(276) [Receive
r=3.1.2]
Process finished with exit code 12
2.问题分析
我们知道,这同步到linux服务器,一般与我们同步命令有关,通常与ssh有关,而rsync有关参数-e,-e参数的说明为
-e, --rsh=COMMAND 指定使用rsh、ssh方式进行数据同步
指定ssh端口:
-e 'ssh -p 10022'
经查阅相关资料,说可能是ssh版本有冲突,最好使用与rsync同级目录下的ssh
3.进一步分析
使用where ssh查看电脑里是不是存在多个ssh
果然,存在多个。
4.解决办法
在Goland的setting->Tools->Rsync
配置指定rsync使用的ssh的具体文件位置,如下图所示
另外,关于密钥的位置问题,经过调试发现,其实跟使用哪个ssh有关,如果我们使用rsync同级目录下的ssh,那么密钥就在cygwin的home目录之下对应的ssh文件夹下,如:cygwin64\home\用户名.ssh,
在cygwin命令行下用chown命令确保密钥文件拥有者是当前用户即可。