sshfs montuje bez kompresji lub szyfrowania

28

Jestem bardzo częstym użytkownikiem sshfs do montowania różnych dysków w sieci. Mam jednak bardzo małą maszynę (z procesorem atomowym), z której muszę zamontować katalog za pomocą sshfs.

Czy można wyłączyć całą kompresję, a może nawet szyfrowanie podczas montowania za pomocą sshfs, aby ograniczyć użycie procesora na komputerze, z którego jest podłączony katalog?

Bjarke Freund-Hansen
źródło
1
Porzucasz szyfrowanie i kompresję ... niech pomyślę. Dlaczego nie korzystasz z FTP lub SMB?
lajuette
1
Żadne szyfrowanie nie brzmi jak brak SSH. Czy rozważałeś użycie innego protokołu?
WhyNotHugo
2
@lajuette: Jak stwierdza Dan D. poniżej, uwierzytelnianie ssh nadal będzie szyfrowane, więc nie będzie żadnych haseł ani kluczy w postaci zwykłego tekstu. Czy znasz również protokół, który jest tak łatwo dostępny jak ssh, w którym mogę montować foldery zdalne tak łatwo, jak to możliwe za pomocą sshfs?
Bjarke Freund-Hansen
@lajuette Chcę tego samego, a powodem jest to, że potrzebuję czegoś, czego moje kwarantannowe maszyny do grania Win98 i WinXP mogą użyć do pobrania plików z komputera stacjonarnego z systemem Linux i, spośród dostępnych opcji, SSH przez WinSCP Just Works ™ przez moja biała lista zapory kwarantanny, gdy FTP i SMB nie będą działać, bez względu na to, jak bardzo staram się otwierać odpowiednie porty. (I WebDAV można najwyraźniej być obsługiwane tylko przez Apache, który jest zbyt skomplikowany do chroot.)
ssokolow
Aha, AES daje mi przepustowość 27Mbit na Athlonie 640000, maksymalizując procesor, podczas gdy RC4 podwaja to, więc żadne szyfrowanie nie powinno być jeszcze bliższe maksymalizacji 100Mbitowej karty sieciowej po stronie WinXP. (Biorąc pod uwagę, że obrotowe napędy rdzy zainstalowane obecnie na obu końcach omawianych operacji kopiowania osiągają maks. Prędkość około 200 Mb, gdy SMB jest używany z ciągłymi plikami w celu wyeliminowania potrzeby wyszukiwania.)
ssokolow

Odpowiedzi:

38

Mimo że ssh o wysokiej wydajności dodaje brak szyfru, szyfr arcfour jest prawie tak szybki i stanowi standard.

Posługiwać się: -o Ciphers=arcfour

Używam tego przez sieć lokalną i uzyskuję około 85% Ethernet 100 Mb / s lub około 10,625 MB / s

(W odpowiedzi Vavy, sshfs nadal byłby tym, czym jest, nawet gdy szyfrowanie ssh jest wyłączone, ponieważ protokół uwierzytelniania nadal byłby aktywny, bez którego równie dobrze można używać telnet.)


Uwaga dla @osgx Ostatnio znalazłem OpenSSL: Wybór szyfru, który zawiera następujący wykres:

wprowadź opis zdjęcia tutaj

Poniżej znajduje się sekcja wyników z tej strony. Wykres i wyniki są wątpliwe, ponieważ nie wskazują, w jaki sposób przeprowadzono test porównawczy i na jakim sprzęcie, ale myślę, że nie są tak daleko.

100 000 Kb / s to mój próg dopuszczalnej wydajności. Stanowi to 1 rdzeń procesora (w moim przypadku 8) działający przy 100% wykorzystaniu do przesyłania danych 780 Mb / s (co jest rozsądnym punktem nasycenia łącza Gigabit Ethernet).

RC4 to najszybszy szyfr, jeśli używasz procesora, który nie obsługuje AESNI .

AES-128 to kolejny najszybszy szyfr i znacznie szybszy niż RC4, jeśli masz obsługę AESNI. To około 54% wolniej, jeśli nie. AES-256 jest nadal wolniejszy i chyba że jawnie skonfigurowano inaczej, każda przeglądarka obsługująca AES-128 będzie również obsługiwać AES-256.

To, co zostało cytowane powyżej, wyraźnie pokazuje, że arcfour (a także AES z AESNI ) może nasycić łącze Gigabit na nowoczesnej maszynie.

Jeśli nie potrzebujesz szyfrowania, żaden szyfr z hpn-ssh jest jeszcze szybszy, ale potrzebujesz go tylko wtedy, gdy musisz nasycić łącze kilkakrotnie większą przepustowością łącza Gigabit lub jeśli potrzebujesz mniejszego użycia procesora.

Dan D.
źródło
Dzięki za bardzo pouczającą odpowiedź, a to naprawdę przyspiesza sshfs :)
nXqd
3
Czy to nie jest „-o cipher = arcfour”?
asalamon74
1
Czy arcfour osiągnie prędkość 1 Gb?
osgx
1
@osgx Tak, tak mi się wydaje. Zobacz zaktualizowaną odpowiedź.
Dan D.
3
arcfourszyfr przestarzały i brakuje go w większości nowoczesnych instalacji OpenSSH, Możesz [email protected]zamiast tego użyć .
Mesut Tasci,
8

W przypadku sftp bez szyfrowania użyj sshfs+socat

Po stronie serwera uruchom

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

I po stronie klienta

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

Źródło: http://pl.atyp.us/wordpress/index.php/2009/09/file-transfer-fun/

endru
źródło
2
Chociaż teoretycznie może to rozwiązać problem, najlepiej byłoby podsumować zawartość linku i podać link jako odniesienie
Kanadyjczyk Luke REINSTATE MONICA
3
Domyślnie socat TCP-LISTEN nasłuchuje na wszystkich interfejsach. Aby ograniczyć się do jednego określonego interfejsu sieciowego (np. Localhost), użyj ,bind=127.0.0.1opcji. Aby zezwolić na wiele połączeń z serwerem, dodaj ,forkopcję. Robisz serwer tylko do odczytu? Dodaj -Rdo polecenia EXEC. Na koniec będzie to wyglądało tak: socat TCP-LISTEN:7777,fork,bind=127.0.0.1 EXEC:'/usr/lib/sftp-server -R'(w Arch Linux musiałem /usr/lib/ssh/sftp-serverzamiast tego użyć ).
Lekensteyn
Aby uzyskać nieco większe bezpieczeństwo, możesz również ograniczyć zakres adresów IP, np. ,range=192.168.1.2/32Aby zezwolić na połączenie tylko jednego konkretnego komputera.
Robin Dinse
3

Nie ma możliwości wyłączenia szyfrowania - w końcu to ssh. Wygląda na to, że kompresja jest domyślnie wyłączona, ponieważ należy poprosić o nią za pomocą -Cprzełącznika.

Ale możesz sprawdzić ~/.ssh/configplik pod kątem ustawień dotyczących kompresji. Jeśli dodasz następujące wiersze u góry tego pliku, kompresja powinna być wyłączona:

Host *
    Compression no
innaM
źródło
2

Możesz zamontować za pomocą, -o compression=noaby wyłączyć kompresję. Nie można wyłączyć szyfrowania, po tym nie byłoby sshfs :) Jeśli jest powolny, sugeruję użyć innego sposobu zamontowania katalogu, np. Przez sambę, nfs lub ftp.

vava
źródło
NFS byłby dobrym wyborem
Jeremy L
Domyślnie wydaje się to „kompresja = nie”.
WhyNotHugo
0

Myślę, że kompresja jest czymś, co jest naprawdę szybsze tylko wtedy, gdy czas kompresji jest kompensowany czasem przesyłania danych. Tak więc kompresja na wolnym połączeniu zwiększa prędkość nawet do 6 razy szybciej niż bez. Kompresja w szybkim połączeniu nie jest w ogóle przydatna, ponieważ zmniejsza prędkość z powodu opóźnienia kompresji w twoim systemie lub hoście. Niektóre hosty w ogóle nie akceptują kompresji, ponieważ nie chcą tracić mocy procesora na użytkowników.

Myślę, że ten przełącznik -o Ciphers=arcfourzwiększy szybkość szyfrowania do prawie braku szyfrowania i -o cache=yes -o kernel_cache -o large_reads -o compression=nomoże znacznie zwiększyć twoją szybkość, ponieważ nieco zoptymalizuje sshfs. Kompresja na połączeniach o niskiej prędkości znacznie przyspieszy transfer, jeśli możliwa jest kompresja; głównie tak jest. Na przykład używam go z połączeniem 2 Mbit / s up i 0,3 Mbit / s up i przyspiesza transfer o około 3-5 minut zamiast 25-30 minut o około 30 MB.

Andreas Bartels
źródło
W pewnym sensie nie podajesz lepszych informacji niż zaakceptowana odpowiedź
yass
Akceptowana odpowiedź nawet nie wspomina o kompresji. Ta odpowiedź może być nieco nie na temat, ale nadal ma dobre rady.
Ktoś