Jak mogę wyłączyć szyfrowanie w openssh?


21

Mam problemy z wydajnością, używając kombinacji openssh (serwer) i putty (klient) do korzystania ze zdalnego webproxy. Chciałbym wyłączyć szyfrowanie i przetestować wyniki, aby zobaczyć, czy to robi różnicę. Jak mogę to zrobić? Czy mogę coś zmodyfikować w sshd_config. Jestem bardzo nowy w openssh.

Wszelkie inne pomysły będą mile widziane.

Zasadniczo ustawiłem moją IE, aby używała skarpetek 127.0.0.1 jako serwera proxy. Łączę mój kit z moim serwerem openssh w domu i voila - dzięki temu mogę przeglądać internet. Jest jednak niesamowicie wolny, mimo że wiem, że mam szybkie połączenie z moim domem (na przykład ftp działa z prędkością powyżej 50 KB / s.


2
Szkoda, że ​​łatka rot13 ( miranda.org/~jkominek/rot13 ) nigdy nie złapała ...
Kenster

5
Bardzo wątpię, że szyfrowanie używane przez SSH jest przyczyną twojego wolnego połączenia, dopóki twój serwer SSH nie działa na cyfrowym zegarku na rękę od 1980 roku.
joschi

Odpowiedzi:


17

Bez ponownej kompilacji nie da się tego zrobić, o ile mi wiadomo. Możesz jednak przejść na ARC4 lub Blowfish, które są absurdalnie szybkie na nowoczesnym sprzęcie.

NAJLEPSZA wydajność (jeśli chodzi o cykle zegara) wzrost, jaki można uzyskać, to dodawanie

compression no

Możesz to zrobić, zmieniając

ciphers         aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,
                aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,
                aes256-cbc,arcfour

do

ciphers         arcfour,blowfish-cbc

Jeśli chcesz wycisnąć trochę dodatkowej wydajności z ryzykiem niezgodności, możesz to zmienić

macs  hmac-md5,hmac-sha1,umac-64@openssh.com,
      hmac-ripemd160,hmac-sha1-96,hmac-md5-96

do

macs  hmac-md5-96

Jeśli nadal uważasz, że to zbyt duże obciążenie, możesz wrócić do wersji 1 lub po prostu zrobić standardową sieć VPN.


3
Jeśli twoja instalacja OpenSSH (na obu końcach) jest zgodna z obsługą szyfru „none”, możesz również to określić, ale to przeczy całemu celowi bezpiecznej powłoki.
voretaq7

1
Dla C-skłonnych wśród nas, możesz dodać w {"none", SSH_CIPHER_NONE, 8, 0, 0, EVP_enc_null} do cipher.c w tablicy szyfrów.
ŹV -

3
Chciałbym również wskazać, że możesz użyć czegoś takiego jak socat ( dest-unreach.org/socat ), aby zrobić to samo ORAZ uniknąć całego narzutu protokołu SSH.
ŹV -

Myślę, że umac-64 jest najszybszym z tych algorytmów mac.
James Reinstate Monica Polk

W każdym razie 96-bitowa MD5 jest niezwykle szybka.
ŹV -

7

O ile klient lub serwer nie są drastycznie słabe, bardzo wątpię, że to szyfrowanie powoduje problemy z wydajnością. Regularnie używam proxy ssh „-D 8080” i nigdy nie zauważyłem niczego poza bardzo niewielkim spowolnieniem.

Jedną rzeczą do sprawdzenia jest sprawdzenie, jakie jest opóźnienie między klientem a serwerem. Jeśli jest to bardzo ukryte połączenie, z pewnością zobaczysz niską wydajność w tunelu podczas korzystania z HTTP, nie zauważając problemów z wydajnością FTP. Gdy trwa przesyłanie FTP, opóźnienie nie ma tak naprawdę znaczenia, ale w przypadku HTTP masz do czynienia ze stronami internetowymi, które mogą mieć 50 lub więcej indywidualnych uzgadnień HTTP, które muszą nastąpić. Połączenia o dużym opóźnieniu naprawdę spowolnią ten proces i sprawią, że przeglądanie będzie nie do zniesienia.

Tak czy inaczej, zalecenia Zephyr Pellerin są trafne. Jeśli naprawdę sądzisz, że to szyfrowanie powoduje je z całą pewnością, przełącz się na inny szyfr. Proponuję jednak najpierw przyjrzeć się opóźnieniom, ponieważ wydaje się, że jest to znacznie bardziej prawdopodobny kandydat.


+1 za to ... problemami, które najprawdopodobniej nie będą szyfrowaniem, a przede wszystkim będzie to połączenie z hostem w domu.
DaveG,

16
Chciałbym, żeby ludzie przestali mówić, że nie trzeba tego robić, i wdawać się w długie dyskusje na temat korzyści i wad związanych z narzutami szyfrowania (jeśli nie, ale po prostu spróbować odpowiedzieć na pytanie). Nie widzę powodu, aby dodawać nadmiarowe szyfrowanie dla mojego zadania lokalnego na moim komputerze lokalnym, dla którego potrzebuję przynajmniej uwierzytelnienia, ale praca z localhost na localhost naprawdę nie wymaga szyfrowania.
Marius

5
Nieprawda, spróbuj skopiować duży plik za pomocą scp na gig-ethernet. Obciążenie Intel iCore 5 wynosi 80%.
lzap

@Izap> Jest jednak coś więcej niż tylko szyfrowanie. Przeniesienie dużego pliku przy użyciu ftp(bez ssl) powoduje również obciążenie procesora od 20 do 40%. Obwiniam tani gig-ethernet wymagający zbyt dużej uwagi procesora.
spectras

Kiedy używasz SSH do wysyłania / odbierania ZFS, procesor jest wąskim gardłem;)
Xdg

6

Wątek ten sprawił, że wykonałem własne testy porównawcze i dowiedziałem się, że wydajność różni się nie tylko w zależności od innego szyfru / MAC, ale także wpływa na to, jakie dane wysyłasz, jakie procesory są zaangażowane i jak skonfigurowana jest sieć.

IMO powinien zatem uruchomić własne testy i znaleźć najlepsze ustawienia dla swojej sytuacji.

Jeśli ktoś jest zainteresowany, oto wyniki moich testów porównujących serwer z procesorem Intel E5506 z Raspberry Pi:

--
-- Intel Xeon E5506(4 x 2.13 GHz), 50MB Random binary Data over localhost
--

cipher                      mac                        speed
---------------------------------------------------------------
aes192-cbc                  hmac-sha1                    50MB/s
arcfour256                  hmac-sha2-512              49.9MB/s
arcfour                     hmac-ripemd160             49.8MB/s
aes256-cbc                  hmac-sha1-96               49.7MB/s
aes128-cbc                  hmac-sha1-96               49.7MB/s
aes192-cbc                  hmac-sha1                  48.9MB/s
arcfour                     hmac-ripemd160@openssh.com 48.8MB/s
aes256-cbc                  hmac-sha1-96               48.8MB/s
arcfour                     hmac-ripemd160@openssh.com 48.7MB/s
aes128-cbc                  hmac-sha1                  48.4MB/s


--
-- Raspberry PI B+, 10MB Random binary over localhost
--

cipher                      mac                        speed
---------------------------------------------------------------
arcfour256                  umac-64@openssh.com        2.75MB/s
arcfour128                  umac-64@openssh.com        2.74MB/s
arcfour                     umac-64@openssh.com        2.63MB/s
arcfour                     umac-64@openssh.com        2.54MB/s
arcfour                     hmac-md5-96                2.36MB/s
arcfour128                  hmac-md5                   2.34MB/s
arcfour256                  hmac-md5                   2.34MB/s
arcfour256                  umac-64@openssh.com        2.33MB/s
arcfour256                  hmac-md5-96                2.28MB/s
arcfour256                  hmac-md5-96                2.22MB/s

Ale tylko „10 najlepszych”, pełne wyniki można znaleźć tutaj .


wyniki bez szyfru „none” są niepełne w tym temacie. Mam wiele pogoplugv4 (wersja ramienia 800 MHz = wolna) i często łączą procesor z ssh. dlatego ludzie szukają szyfru none. użycie procesora ssh / sshd na 100% oznacza, że ​​nie jest to problem z siecią! mam nadzieję, że pamiętam, aby wrócić i
wysłać

Czy masz skrypt używany do generowania tych danych? Byłbym bardzo zainteresowany wydajnością obecnych szyfrów ( chacha20-poly1305@openssh.com) na dzisiejszym sprzęcie.
Jakuje

To wszystko w istocie
Florian Fida

3

Byłem w stanie skompilować sshd / ssh z szyfrowaniem „none” za pomocą tego postu: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=24559#58

To bardzo stary post, ale musisz wprowadzić 3 niewielkie modyfikacje pliku kodu źródłowego cipher.c. Następnie ponownie skompiluj kod sshd / ssh.

@@ -175,7 +175,7 @@
    for ((p = strsep(&cp, CIPHER_SEP)); p && *p != '\0';
        (p = strsep(&cp, CIPHER_SEP))) {
        c = cipher_by_name(p);
-       if (c == NULL || c->number != SSH_CIPHER_SSH2) {
+       if (c == NULL || (c->number != SSH_CIPHER_SSH2 && c->number != SSH_CIPHER_NONE)) {
            debug("bad cipher %s [%s]", p, names);
            xfree(ciphers);
            return 0;
@@ -343,6 +343,7 @@
    int evplen;

    switch (c->number) {
+   case SSH_CIPHER_NONE:
    case SSH_CIPHER_SSH2:
    case SSH_CIPHER_DES:
    case SSH_CIPHER_BLOWFISH:
@@ -377,6 +378,7 @@
    int evplen = 0;

    switch (c->number) {
+   case SSH_CIPHER_NONE:
    case SSH_CIPHER_SSH2:
    case SSH_CIPHER_DES:
    case SSH_CIPHER_BLOWFISH:

Również noneszyfr należy dodać do twojego/etc/ssh/sshd_config

Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,aes128-ctr,aes192-ctr,aes256-ctr,none

Poniższe linki pomogą ci zdobyć źródło ssh dla systemów Debian i Ubuntu:

Podziękowania dla Deana Gaudeta za bycie niesamowitym


2

Według tego bardzo fajnego posta na blogu

http://blog.famzah.net/2010/06/11/openssh-ciphers-performance-benchmark/

Zalecam ustawienie następujących szyfrów. Upewnij się również, że kompresja jest wyłączona, jeśli chcesz uzyskać najlepszą wydajność w sieci LAN. Należy pamiętać, że jest to możliwe zagrożenie bezpieczeństwa, używaj tylko w bezpiecznej sieci LAN (np. W domu itp.).

# cat ~/.ssh/config
Host 192.168.1.*
    Compression no
    Ciphers arcfour256,arcfour128,arcfour,blowfish-cbc,aes128-cbc,aes192-cbc,cast128-cbc,aes256-cbc

Zmodyfikuj pierwszy wiersz, aby wyświetlić własne adresy IP w sieci LAN. Możesz także podać nazwy hostów (oddzielone spacją). Zapewnia to najlepszą wydajność scp w sieci LAN.


1

JEŚLI chcesz wypróbować całkowicie nieszyfrowany i nieskompresowany tunel, możesz spróbować użyć czegoś takiego jak rinetdprzekazywanie danych zamiast SSH. Zminimalizowałoby to dodatki SSH, a jednocześnie oferowałby prosty tunel binarnie bezpieczny dla połączeń TCP.

Kiedy mówisz, że masz szybkie połączenie w domu, czy jesteś pewien, że jest ono szybkie w obu kierunkach? Wiele połączeń domowych jest bardzo asymetrycznych (na przykład mój domowy ADSL to ~ 11Mit poniżej i ~ 1,5Mbit powyżej, a wiele jest gorszych, niektóre z nich mogę zacytować od znajomych / połączeń rodzinnych: 7M / 0,4M, 19M / 1,3M, 20M / 0,75 mln ...). Pamiętaj, że jeśli używasz domu jako serwera proxy, dane muszą przejść przez Twój link w obie strony, więc w najlepszym wypadku będą się przenosićprzy najwolniejszej z twoich prędkości pobierania i wysyłania, a także masz fragment dodatkowego opóźnienia, aby również wziąć pod uwagę. Również twój dostawca usług internetowych może celowo ograniczać komunikację początkową (kocową lub selektywną, aby nie wpływać na takie rzeczy, jak poczta elektroniczna i wybrane popularne strony internetowe), aby zniechęcić osoby zarządzające serwerami / serwerami proxy do swoich łączy domowych, chociaż jest to stosunkowo rzadkie.


ssh jest standardem w większości komputerów. rinetd nie jest na niektórych, ale dzięki za sugestię.
Marius

wtedy powinieneś spróbować netcat / nc
ThorstenS

0

Właśnie przeprowadziłem szeroko zakrojone testy w tym zakresie, a pakiet szyfrów, który przyniósł największą przepustowość, to aes-128-ctr z umac64 MAC. Na 4-rdzeniowej maszynie 3,4 GHz widziałem prawie 900 MB / s przez localhost (aby wyeliminować wąskie gardła w sieci ze względu na testy porównawcze)

Jeśli naprawdę potrzebujesz tak dużej wydajności, potrzebujesz najnowszej wersji SSH i ewentualnie łatek HPN-SSH .


0

Jest to jedna opcja SSH po stronie klienta, której użyłem do połączenia SSH z urządzeniami klasy niskiej:

ssh -c none -m hmac-md5-96 -oKexAlgorithms=curve25519-sha256@libssh.org ....

Żaden szyfr nie jest natywnie obsługiwany w najnowszych wersjach OpenSSH. Jednak od wersji 7.6 OpenSSH usunął obsługę SSHv1 i oznaczył szyfr „brak” do użytku wewnętrznego.

#define CFLAG_NONE      (1<<3)
#define CFLAG_INTERNAL      CFLAG_NONE /* Don't use "none" for packets */

Następnie potrzebujesz łatania i ponownej kompilacji zarówno po stronie serwera, jak i klienta.

#define CFLAG_INTERNAL      0
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.