当试图将文件从Linux复制到Windows时,scp卡住了

我使用下面的scp语法为了将文件从Linux红帽子5转移到Windows机器(在Temp目录下),

备注:

  • SSH服务器已经安装在Windows机器上
  • 我在我的shell脚本中使用这一行

    sshpass -p '$password' /usr/bin/scp -o StrictHostKeyChecking=no $FILE [email protected]:'D:/Temp' 

在大多数情况下文件传输成功

但有时scp卡在文件传输? ,尽pipe连接是可以的,如ping等

并从scp(经过很长时间)得到以下错误

  ssh_exchange_identification: read: Connection reset by peer 
  1. 为什么SCP不稳定和卡住? ,以及这个问题的解决scheme是什么?
  2. 什么别人好的替代scp? ,(考虑到我需要100%的稳定性)

这可能是networking问题的一个标志 – ping不能解决所有问题。 最有可能的罪魁祸首是一个防火墙或NAT设备,正在放弃连接。

将-v详细输出添加到scp会给你更多的细节,可以给出更好的线索。 如果您想使用-v选项发送失败转移的输出,我可能会提供更准确的答案。

由同级重置的连接意味着 – 目标服务器重置/closures连接。 如果没有任何数据发送,或者如果它们不能正常工作,NAT设备将会这样做。

一些ISP将这样做为stream量整形的一种forms,以限制对等stream量 – 不幸的是,有些ISP也将其应用于SSH连接。 这可能不会成为商业联系的问题,但如果任何一方有住宅互联网连接,它可能适用。

在Windows上的SSH服务器也可能是片状的。 您不指定您使用哪一个,但不是所有这些工作都可靠。

在一个真实的怪诞的例子中,我有一个朋友有类似的问题 – 事实certificate,他的电缆调制解调器的固件中的一个错误,每两百万个数据包中有一个损坏。 很less有小的传输工作完美,但是大的传输每次都会死亡。

或者它可能只是普通的互联网问题。 互联网是不是100%可靠,永远不会。 有时连接失败,有时候包会丢失。 有时候,以太网电缆里面的小男人会罢工,不想携带数据包。 所以你需要一个可以处理的工具,并保持重试,直到成功。

rsync会是一个更好的select,只是因为它允许恢复。 这篇博客文章解释了如何设置rsync与恢复scp的地方。 如果有必要的话,你可以编写一个简单的shell脚本来检查rsync的退出代码,如果失败则继续重试。 这个其他的博客文章有这样一个脚本的例子。

什么别人好的替代scp? ,(考虑到我需要100%的稳定性)

考虑翻转它并使用Windows机器上的WinSCP来连接和获取Linux服务器上的文件。

Eytan,你没有提到,如果你能够在Windows机器上安装其他工具,如果需要encryption连接,在这里我的意见和build议:

  • 今天我有rsync的问题,复制大量的文件的大树结构…它只是崩溃,但是当你再次运行它的好处,他们将“继续”,从他们停止之前….
  • rsync需要SSH或RSH实用程序…假设问题是你的SSH服务器与rsync你将创build一个新的故障点。 但个人,我会testing之前,抛弃这个解决scheme,因为它是多才多艺的。

我的build议

  • 我有很好的经验,使用cygwin像您的需求的解决scheme。
    所以,安装基本包+打开ssh + cygrunsrv(创buildwindows服务)。
  • 然后,为了避免重写您的解决scheme,请尝试使用cygwin ssh服务器,而不是Windows或您使用的任何其他ssh服务器。
  • 或者,你可以安装一个rsh服务器,并尝试与rsync。
  • 其他选项是FTP服务器(proftpd或pureftpd),并使用Linux上的ncftp / ncftpput连接到你的Windows。
    ncftp能够识别先前/较旧的文件,并决定是否覆盖它和recursion目录。 你可能会在你的Red Hat DVD中findncftp RPM。
    考虑到性能,FTP将是最好的….

正如你所看到的,我喜欢cygwin,它在Windows上帮助我很多次…并且是我的Windows桌面上的“必备”工具。

祝你好运。