sshfs挂载而无需压缩或加密


28

我经常使用sshfs在网络上挂载各种磁盘。但是,我确实有一台非常小的机器(带有原子处理器),需要使用sshfs从中安装目录。

使用sshfs挂载时,是否可以禁用所有压缩,甚至禁用加密,以限制从中挂载目录的计算机上的cpu使用情况?


1
您正在放弃加密和压缩...让我想一想。为什么不使用FTP或SMB?
lajuette

1
没有加密听起来真的没有SSH。您是否考虑过完全使用其他协议?
WhyNotHugo 2013年

2
@lajuette:就像Dan D.在下面指出的那样,ssh身份验证仍将被加密,因此没有明文形式的密码或密钥。另外,您是否知道像ssh一样容易使用的任何协议,在那里我可以像使用sshfs一样轻松地安装远程文件夹?
Bjarke Freund-Hansen 2014年

@lajuette我想要同样的事情,原因是我需要隔离的Win98和WinXP复古游戏机可以用来将文件从我的Linux台式机中拉出,以及可用选项中的通过WinSCP Just Works™通过SSH进行操作。我的白名单隔离防火墙无法正常工作,而FTP和SMB则不管我尝试打开正确的端口有多困难。(而且WebDAV显然只能由Apache提供,这对chroot来说太复杂了。)
ssokolow

哦,再加上,AES在Athlon64 3200+上为我提供了27Mbit的吞吐量,从而使CPU最大化,而RC4则将其提高了一倍,因此,没有任何加密方法可以使WinXP上的100Mbit NIC最大化。(考虑到当将SMB与连续文件一起使用以消除寻找的必要性时,当前正在相关复制操作两端安装的旋转锈驱动器最大可达到200Mbit。)
ssokolow

Answers:


38

尽管高性能ssh添加了无密码,但是arcfour密码几乎与之一样快,并且已成为标准密码。

使用: -o Ciphers=arcfour

我一直在本地网络上使用它,我得到了100Mbps以太网的大约85%或大约10.625MB / s

(作为对vava的回答,即使关闭了ssh的加密,sshfs仍然是它的样子,因为身份验证协议仍将处于活动状态,否则,您不妨使用telnet。)


@osgx的注释我最近发现了OpenSSL:Cipher Selection,其中包括以下图形:

在此处输入图片说明

以下是该页面的结果部分。该图和结果令人怀疑,因为它们没有说明基准是如何完成的以及在什么硬件上进行的,但是我认为它们相差不远。

100,000 Kbyte / s是我可以接受的性能极限。这表示1个CPU内核(在我的情况下为8个)以100%的利用率运行,以传输780Mbit / s的数据(这对于千兆位以太网链路来说是一个合理的饱和点)。

如果使用不支持AESNI的处理器,则RC4是最快的密码。

AES-128是第二快的密码,如果您支持AESNI,则它比RC4快得多。如果不这样做,速度会慢54%。AES-256仍然较慢,除非另有明确配置,否则任何支持AES-128的浏览器也将支持AES-256。

上面引述的内容清楚地表明,arcfour(以及带有AESNI的 AES )可以使现代机器上的千兆链路饱和。

如果不需要加密,则来自hpn-ssh的无密码甚至更快,但是仅当您需要使带宽达到千兆链路带宽的几倍或者需要减少CPU使用率时,才需要加密。


感谢您提供的信息非常丰富,这确实加快了sshfs的速度:)
nXqd 2012年

3
是'-o cipher = arcfour'吗?
asalamon74

1
arcfour能否达到1Gbit的速度?
osgx 2014年

1
@osgx是的,我会这样认为。查看最新答案。
Dan D.

3
arcfour在大多数现代OpenSSH安装中不推荐使用cipher并缺少该密码,您可以chacha20-poly1305@openssh.com改用。
Mesut Tasci '18 -10-10

8

对于不加密的sftp,请使用sshfs+socat

在服务器端运行

socat TCP4-LISTEN:7777 EXEC:/usr/lib/sftp-server

而在客户端

sshfs -o directport=7777 remote:/dir /local/dir

资料来源:http : //pl.atyp.us/wordpress/index.php/2009/09/file-transfer-fun/


2
虽然从理论上讲这可以解决问题,但最好总结一下链接的内容,并提供链接作为参考
Canadian Luke REINSTATE MONICA 2012年

3
默认情况下,socat TCP-LISTEN在所有接口上侦听。要限制为一个特定的网络接口(例如localhost),请使用该,bind=127.0.0.1选项。要允许到服务器的多个连接,请添加,fork选项。做一个只读服务器?添加-R到EXEC命令。最后,它看起来像这样:(socat TCP-LISTEN:7777,fork,bind=127.0.0.1 EXEC:'/usr/lib/sftp-server -R'在Arch Linux上,我不得不使用它/usr/lib/ssh/sftp-server)。
Lekensteyn 2014年

为了获得更高的安全性,您还可以使用限制IP范围,例如,range=192.168.1.2/32,仅允许连接一台特定的计算机。
罗宾·丁斯

3

无法禁用加密-毕竟是ssh。好像默认情况下禁用压缩,因为您必须通过-C开关请求压缩。

但是您可能需要检查~/.ssh/config文件中有关压缩的设置。如果在该文件的顶部添加以下行,则应禁用压缩:

Host *
    Compression no

2

您可以使用挂载-o compression=no以关闭压缩功能。无法关闭加密,之后将不再是sshfs :)如果速度较慢,我建议使用其他方式挂载目录,例如通过samba,nfs或ftp。


NFS是一个不错的选择
Jeremy L

无论如何,默认值似乎是“ compression = no”。
WhyNotHugo 2013年

0

我认为压缩只有在压缩时间被传输数据所补偿的情况下才真正更快。因此,慢速连接上的压缩速度可能比没有连接时快6倍。快速连接上的压缩根本没有用,因为由于您或主机系统上的压缩延迟而降低了速度。一些主机根本不接受压缩,因为它们不想在用户身上花费处理器能力。

我认为此开关-o Ciphers=arcfour将使加密速度提高到几乎没有加密,并且-o cache=yes -o kernel_cache -o large_reads -o compression=no由于它会稍微优化sshfs ,因此可能会大大提高您的速度。如果可以压缩,低速连接上的压缩将大大加快您的传输速度;大部分是。例如,我确实使用了2 Mbit / s的下行速度和0.3 Mbit / s的连接速度,并且将传输速度提高了大约3-5分钟,而不是25-30分钟,传输了大约30 MByte。


从某种意义上说,你不给比接受的答案更好的信息
亚斯

公认的答案甚至没有提到压缩。这个答案可能有点题外话,但还是有很好的建议。
某人
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.