加速scp传输

1,357 views
Skip to first unread message

lzt

unread,
Feb 24, 2014, 11:41:11 PM2/24/14
to xidian...@googlegroups.com

今天有人问我如何才能加速scp的问题。因为很多人曾经问过我,我就总结一下发到这里。

scp的优势很多,比如单端口传输,方便快捷。而在内网 高速网络 中性能往往受到cpu计算能力的限制无法到达满意的传输效率。

这里有三个方法来改善这个问题,当然如果能有更好的方法欢迎补充。
因为是加密导致的传输效率不高所以当然是尝试更换加密算法啦。

1、使用效率更高但是,不怎么安全的加密方法。
在内网传输中,假设路由是可信的情况下就不需要担心中间人攻击。
于是可以通过-c 参数更换加密算法。
就像这样:  ssh -c aes192-ctr

这里有一张图表示各种参数的性能,


原始地址http://www.orczhou.com/index.php/2013/11/make-scp-faster-with-cipher-and-compression/

各位可以根据图来选择自己喜欢的算法。

2、回滚到rsh

各位都知道ssh本是对r指令集的一个扩充,也就是更安全化的版本,所以当然可以回滚到r指令集啦。

在配置文件中找到这样的段。

# Never do this! Security risk!!
Host *
 UseRsh yes

把UseRsh打开并在Host中填入信任的ip地址或者区域。这样就可以不用加密了。
请参考这里http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch07_04.htm disable encryption 部分
这里顺便推荐一本书 SSH, The Secure Shell: The Definitive Guide.  写的非常详尽,有需要的可以去我网盘里面下载 https://drive.google.com/file/d/0B7Wy478uBsx8Y0VmOTBtT0s2aUU/edit?usp=sharing

3、HPN-ssh
ssh的高性能补丁,支持多核加密,以及很简单的无加密模式。AUR源里面有。好喜爱那个freebsd里面已经默认用这个了。

关于高速局域网传输文件,不知道各位在用什么方法。




 

yangbo

unread,
Feb 25, 2014, 2:11:49 AM2/25/14
to xidian...@googlegroups.com
scp -C 压缩传输,对文本内容比如日志效果还是很明显的

另外:高速传为何不用rsync呢

On 一 2 24 20:41 , lzt wrote:
> 今天有人问我如何才能加速scp的问题。因为很多人曾经问过我,我就总结一下发到这里。
>
> scp的优势很多,比如单端口传输,方便快捷。而在内网高速网络中性能往往受到cpu计算
> 能力的限制无法到达满意的传输效率。
>
> 这里有三个方法来改善这个问题,当然如果能有更好的方法欢迎补充。
> 因为是加密导致的传输效率不高所以当然是尝试更换加密算法啦。
>
> 1、使用效率更高但是,不怎么安全的加密方法。
> 在内网传输中,假设路由是可信的情况下就不需要担心中间人攻击。
> 于是可以通过-c 参数更换加密算法。
> 就像这样: ssh -c aes192-ctr
>
> 这里有一张图表示各种参数的性能,
>
>
> [1068289534]
>
>
> 原始地址http://www.orczhou.com/index.php/2013/11/
> make-scp-faster-with-cipher-and-compression/
>
> 各位可以根据图来选择自己喜欢的算法。
>
> 2、回滚到rsh
>
> 各位都知道ssh本是对r指令集的一个扩充,也就是更安全化的版本,所以当然可以回滚到r
> 指令集啦。
>
> 在配置文件中找到这样的段。
>
>
> # Never do this! Security risk!!
> Host *
> UseRsh yes
>
>
> 把UseRsh打开并在Host中填入信任的ip地址或者区域。这样就可以不用加密了。
> 请参考这里http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch07_04.htm
> disable encryption 部分
> 这里顺便推荐一本书 SSH, The Secure Shell: The Definitive Guide. 写的非常详尽,
> 有需要的可以去我网盘里面下载 https://drive.google.com/file/d/
> 0B7Wy478uBsx8Y0VmOTBtT0s2aUU/edit?usp=sharing
>
> 3、HPN-ssh
> ssh的高性能补丁,支持多核加密,以及很简单的无加密模式。AUR源里面有。好喜爱那个
> freebsd里面已经默认用这个了。
>
> 关于高速局域网传输文件,不知道各位在用什么方法。
>
>
>
>
>
>
> --
> 您收到此邮件是因为您订阅了“西电开源社区”邮件列表。
> 要向此邮件列表发帖,请发送电子邮件至 xidian...@googlegroups.com
> 要取消订阅,请发送电子邮件至 xidian_linux...@googlegroups.com
> 请通过 https://groups.google.com/group/xidian_linux?hl=zh-CN 访问此网上论坛。
> 通过 [ipv6 enabled] http://xdlinux.info/http://xdl.in/
> [ipv4 only] http://linux.xidian.edu.cn/
> [手机]:http://m.xdlinux.info/
> 访问西电开源社区。
> ---
> 您收到此邮件是因为您订阅了 Google 网上论坛的“西电开源社区邮件列表”论坛。
> 要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到
> xidian_linux...@googlegroups.com
> 要查看更多选项,请访问 https://groups.google.com/groups/opt_out

--

lzt

unread,
Feb 25, 2014, 5:38:34 AM2/25/14
to xidian...@googlegroups.com
rsync 这个命令要传输一个临时的目录,是不是服务端和客户端都得配置一下才行?

PS:其实rsync这个命令我不太会用。用起来和scp差别大吗?

Zhang Cheng

unread,
Feb 25, 2014, 9:22:37 AM2/25/14
to xidian...@googlegroups.com

2014-02-25 18:38 GMT+08:00 lzt <lvzon...@gmail.com>:
rsync 这个命令要传输一个临时的目录,是不是服务端和客户端都得配置一下才行?

PS:其实rsync这个命令我不太会用。用起来和scp差别大吗?

​rsync 是一个增量传输文件的协议,在传输层支持多种协议,包括ssh、rsync、local filesystem等等。

1、rsync over rsync:
在远端机器上需要配置rsyncd,配置一些module,然后可以向这个module写或者读数据。使用rsyncd,可以自行控制权限、压缩、校验等算法。
使用的语法类似:
rsync /local/path/ remote::module/subpath/
rsync remote::module/subpath/ /local/path/

2、rsync over ssh:
这种在传输时使用ssh,远端机器需要启动sshd,无需其他配置。其中加密、压缩、权限控制等全都由ssh来控制。rsync本身仅关注文件的比较算法。
rsync /local/path/ user@remote:/path/to/remote/path/
rsync user@remote:/path/to/remote/path/ /local/path/
(基本用法与scp相似)

3、本地文件系统:

可以简单地理解为cp,例如 rsync -a /path/to/a/ /path/to/b/,与 cp -ar /path/to/a/ /path/to/b/效果基本等价,但是rsync可以更精确的控制文件的属性,保证两个目录完全相同,而且拷贝时是增量拷贝,已经存在且相同的文件不会被重复复制,这一方面比cp有优势。





--
Cheng,
Best Regards

lzt

unread,
Feb 25, 2014, 10:44:00 AM2/25/14
to xidian...@googlegroups.com
诶,rsync还能over ssh  神器!

Zhang Cheng

unread,
Feb 25, 2014, 2:15:54 AM2/25/14
to xidian...@googlegroups.com
在局域网内如果不考虑加密的话,我一般直接用nc传:

接收方:  nc -l 1234 | tar xf -
发送方:  tar cf - <files> | nc $接收方ip 1234

用nc传数据,跑满单核CPU可以跑到2.78Gbps的速度。(测试环境,cpu E5-2609,万兆网卡)

同样的环境,用scp传数据,跑满单核大概是550Mbps。

一般来说,局域网内的环境是可控的,所以加密并不是很重要,但如果环境所限,加密很重要的话,那么花费一些CPU、降低一些吞吐率是值得的。

如果要拷贝的数据可以有很高的压缩比例(例如源代码目录),那么可以在nc的基础上配合一些多线程的压缩工具(如pzip2)来充分使用CPU,提高吞吐率:
接收方: nc -l 1234 | pbzip2 -d -c | tar xf -
发送方: tar cf - <files> | pbzip2 -c | nc $接收方ip 1234

另外,与吞吐率无关,与用户体验有关的,可以考虑使用lftp+sftp的方式(一般openssh-server都默认开启了scp和sftp-server,能用scp的机器一般也会支持sftp,除非管理员专门关掉了):
lftp sftp://user@target/
可以用 get, put, mget, mirror 等命令来操作,使用体验要比裸敲scp或者rsync命令舒适很多。


--
您收到此邮件是因为您订阅了“西电开源社区”邮件列表。
要向此邮件列表发帖,请发送电子邮件至 xidian...@googlegroups.com
要取消订阅,请发送电子邮件至 xidian_linux...@googlegroups.com
请通过 https://groups.google.com/group/xidian_linux?hl=zh-CN 访问此网上论坛。
通过 [ipv6 enabled] http://xdlinux.info/http://xdl.in/
[ipv4 only] http://linux.xidian.edu.cn/
[手机]:http://m.xdlinux.info/
访问西电开源社区。
---
您收到此邮件是因为您订阅了 Google 网上论坛的“西电开源社区邮件列表”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 xidian_linux...@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。



--
Cheng,
Best Regards

lzt

unread,
Feb 25, 2014, 9:48:09 PM2/25/14
to xidian...@googlegroups.com
 其实,有时候在实验室局域网两个人之间传文件也用飞鸽传书iptux 实验室内网现在是千兆网络用iptux基本上满带宽。嘿嘿~~

lzt

unread,
Mar 2, 2014, 1:30:21 AM3/2/14
to xidian...@googlegroups.com
来自@intijk的回复:

呵呵,这个问题还是咱俩最早在高性能实验室拷游戏的时候意识到的吧。

我的回复:

嗯,其实用vsftp+mount -o bind 最简单。


On Wednesday, February 26, 2014 10:48:09 AM UTC+8, lzt wrote:
 其实,有时候在实验室局域网两个人之间传文件也用飞鸽传书iptux 实验室内网现在是千兆网络用iptux基本上满带宽。嘿嘿~~
Reply all
Reply to author
Forward
0 new messages