我使用以下 scp 语法将分配的文件从 Linux red-hat 5 传输到 Windows 机器(在 Temp 目录下),
评论:
- SSH 服务器已经安装在 windows 机器上
我在我的 shell 脚本中使用了这一行
sshpass -p '$password' /usr/bin/scp -o StrictHostKeyChecking=no $FILE [email protected]:'D:/Temp'
在大多数情况下,文件传输成功
但有时 scp 在文件传输过程中卡住了?,尽管连接正常,如 ping 等
我从 scp 收到以下错误(经过很长时间)
ssh_exchange_identification: read: Connection reset by peer
- 为什么 scp 不稳定并卡住了?,以及这个问题的解决方案是什么?
- scp 的其他好选择是什么?, (考虑到我需要 100% 的稳定性)
这可能是网络问题的征兆 - ping 无法捕获所有问题。最可能的罪魁祸首是断开连接的防火墙或 NAT 设备。
为 scp 的详细输出添加 -v 将为您提供有关它在做什么的更多详细信息,并可能为正在发生的事情提供更好的线索。如果您想使用 -v 选项发布传输失败的输出,我也许可以给出更准确的答案。
由对等方重置连接意味着 - 目标服务器重置/关闭连接。如果一段时间没有发送任何数据,或者如果它们无法正常工作,NAT 设备将执行此操作。
一些 ISP 会将此作为流量整形的一种形式来限制对等流量 - 不幸的是,有些 ISP 也将其应用于 SSH 连接。这可能不会成为业务连接的问题,但如果任一端都有住宅互联网连接,则可能适用。
Windows 上的 SSH 服务器也可能不稳定。您没有指定使用哪一个,但并非所有这些都可靠地工作。
在一个现实生活中的奇怪例子中,我有一个朋友也有类似的问题——结果证明是他的电缆调制解调器固件中的一个错误,每几百万个数据包中就有一个损坏了。很少有小转移可以完美运行,但大转移每次都会死掉。
或者它可能只是正常的互联网问题。互联网不是 100% 可靠的,而且永远不会。有时连接会失败,有时数据包会在途中丢失。有时,以太网电缆内的小人会罢工,不想携带您的数据包。所以你需要一个可以处理这个问题的工具,并不断重试直到成功。
rsync 在这里会是一个更好的选择,仅仅是因为它允许恢复。 这篇博文解释了如何设置 rsync 并用 resuming 代替 scp。如有必要,您可以编写一个简单的 shell 脚本来检查 rsync 的退出代码,如果失败则继续重试。 This other blog post有一个这样的脚本的例子。
考虑翻转它并使用 Windows 机器上的 WinSCP 连接并获取 Linux 服务器上的文件。
Eytan,您没有提到您是否能够在Windows机器上安装其他工具以及是否需要加密连接,这里是我的评论和建议:
我的建议
所以,安装基本包 + 打开 ssh + cygrunsrv(创建 Windows 服务)。
能够识别预先存在/较旧 的文件并决定是否覆盖它和递归目录。您可能可以在 Red Hat DVD 中找到 ncftp RPM。 考虑到性能,FTP将是最好的....
如您所见,我喜欢 cygwin,它在 Windows 上帮助了我很多次......并且是我 Windows 桌面上的“必备”工具。
祝你好运。