在本地网络中复制文件而不进行加密(ssh)


22

scp在所有情况下都可以正常工作,但是Raspberry Pi很难在安全的环境(lan)中有效地复制文件。通过54 Mbit无线局域网,理论上可能的6.75 MB / s缩减至约1.1 MB / s。

有没有一种方法可以在不加密的情况下远程复制文件?

它应该是一个cli命令,不依赖于额外的服务(ftp,samba)或至少具有最少的配置。我的意思是,一个标准工具可以与标准程序/服务(如scp / ssh)一起使用,可以很好地使用。


2
实际上,“没有任何依赖性”是不可能的。你永远需要的是一面“监听”(如SSH / SFTP服务器时使用的程序scp
umläute

2
netcat呢?
yegorich 2014年

好吧,你是对的。我将更改要求
ManuelSchneid3r 2014年

@umläute,除非客户端可以ssh / rsh到服务器并通过stdin / out进行通信。在过去,将tar传递到远程调用的tar是轻松将目录树从一台计算机复制到另一台计算机的方法。
托尔比约恩Ravn的安徒生

Answers:


14

您可能正在寻找rcp,它通过执行远程执行,rsh因此您将不得不依靠它并记住所有通信都是不安全的。


12

您不能完全在ssh / scp上禁用加密,但是可以强制它使用较不占用CPU的较弱密码。确保未在ssh_config或命令行中打开压缩功能,然后将其添加-c arcfour,blowfish-cbc到scp命令行中以选择较弱的密码。


1
这是一个好主意。这对于主机特定的配置可能吗?(.ssh / config)
ManuelSchneid3r 2014年

3
@ ManuelSchneid3r:是:在Hostssh_config中的某个部分下,用于Ciphers arcfour,blowfish-cbc镜像上述-c开关。但是,如果您的CPU支持AES-NI指令集,我会尝试切换到aes128-gcm@openssh.com(是的,这是密码名称,包括相关@内容),它将快速使用AES128-GCM(对于AES-NI)。
Reid 2014年

在一般情况下(即不是R-Pi),我不会真正将河豚称为弱密码,而硬件加速可能会增强AE。
彼得2014年

9

我写了这个快速脚本:

#!/bin/bash

ssh "$1" "nc -l 2020 > \"$2\" &"
pv "$2" | nc "$1" 2020

它需要两个参数,将其发送到的主机和要发送的文件。它仅适用于一个文件。它使用ssh netcat在另一端开始侦听,然后用于netcat将其发送到该侦听端口。我添加pv了一个很好的进度栏。如果您没有或想要的话,请替换pvcat。将2020端口更改为您喜欢的任何端口。这要求您具有ssh访问远程系统的权限。

这是完全不安全的,但这就是您想要的。


9

我认为NFS在执行此类任务时被低估了,您想要方便,快捷且不关心安全性。NFS的设置非常简单,尤其是在客户端上:请参阅此ubuntu简短指南以及更长的ubuntu社区帮助页面。从客户的角度来看,您刚才安装的服务器目录,它看起来就像一个本地驱动器,你可以使用cprsync或任何你想要的命令。


您对什么样的速度有何期待?
托尔比约恩Ravn的安德森

1
@ThorbjørnRavn Andersen for NFS使用千兆位以太网和PCIe3 x4 SSD,我发现网络是瓶颈。使用QDR Infiniband而不是千兆以太网,SSD是瓶颈。Linux的内核NFS服务器的开销相当低。
埃里克·M

4

有一些适用于HPC(高性能计算)的openssh补丁程序,它们可以通过增加传输窗口大小和禁用加密来提高ssh吞吐量-如果您不介意重新编译(并且可能不打算转发补丁程序),请检查HPN-SSH。正如BowlOfRed在评论中注意到的那样,您需要在客户端服务器上使用补丁。

您还可以rsync在一台机器上将-用作守护程序,将另一台机器用作简单的客户端。这对于通过网络链接同步更大的卷特别有用,因为它比读取(和校验和)文件要慢,因为它只能传输客户端和服务器之间不同的文件部分。有关详细信息,请参见rsync(1)rsyncd.conf(5)手册页。


4
这在您的答案中不是很明确,但是这些补丁包括使用SSH中“无”密码的能力(换句话说,完全禁用加密)。缺点是您必须在两端都应用并运行它。普通服务器将不接受“无”密码。
BowlOfRed 2014年

很好点!
彼得2014年

4

Ben Collins的上述bash脚本是一个很好的解决方案,但是他缺少-p服务器端端口的标志。按原样运行该文件只会给您一个空文件或一台挂起的服务器,该服务器永远不会做任何事情。

如果仅查看命令,则更容易看到正在执行的操作。

DestinationShell# nc -l -p 2020 > file.txt

SourceShell# cat file.txt | nc dest.ip.address 2020

nc或netcat就像cat一样,只不过输出是通过TCP连接回显到另一台机器上的。您只是将服务器上nc的输出推送到目标文件中。您可以用相同的方式设置目标,并echo foo | nc dest.ip.address 2020使用nc进行其他各种操作。


2

自上次更新以来已经过去了一段时间,某些密码已更改,至少在freeBSD上,河豚不再可用。我在当前ssh安装中发现的最快密码是-c aes128-cbc。

请享用。


0

如果要传输整个文件结构,请使用tar。

在接收系统中:

[]# nc -l 2020 | tar xvf -

然后在发送系统上:

[]# tar cvf - | nc dst.hostname.net 2020

在一个系统上观看文件归档,在另一个系统上解压缩;)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.