Назад | Перейти на главную страницу

Как отключить шифрование в openssh?

У меня проблемы с производительностью при использовании комбинации openssh (сервер) и putty (клиент) для использования удаленного веб-прокси. Я хотел бы отключить шифрование и проверить результаты, чтобы увидеть, имеет ли это значение. Как я могу это сделать? Есть ли что-нибудь, что я могу изменить в sshd_config. Я новичок в openssh.

Любые другие идеи будут оценены.

Я в основном настроил свой IE на использование 127.0.0.1 socks в качестве прокси. Я подключаю свою замазку к своему серверу openssh дома и вуаля - я могу просматривать Интернет через нее. Однако это невероятно медленно, хотя я знаю, что у меня быстрое соединение с моим домом (например, ftp работает со скоростью более 50 Кбайт / сек.

Насколько мне известно, без перекомпиляции этого сделать нельзя. Однако вы можете переключиться на ARC4 или Blowfish, которые невероятно быстры на современном оборудовании.

ЛУЧШЕЕ увеличение производительности (что касается тактовых циклов), которое вы можете получить, это добавление

compression no

Вы можете сделать это, изменив

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

к

ciphers         arcfour,blowfish-cbc

Если вы хотите выжать дополнительную производительность из-за риска несовместимости, вы можете изменить

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

к

macs  hmac-md5-96

Если вы все еще считаете, что это слишком много накладных расходов, вы можете вернуться к версии 1 или просто использовать стандартный VPN.

Я очень сомневаюсь, что, если только клиент или сервер не имеют крайне недостаточной мощности, именно шифрование вызывает проблемы с производительностью. Я регулярно использую прокси-сервер ssh socks "-D 8080" и никогда не замечал ничего, кроме очень небольшое замедление.

Одна вещь, которую нужно проверить, - это увидеть, какова задержка между вашим клиентом и сервером. Если это очень скрытое соединение, вы наверняка увидите низкую производительность по туннелю при использовании HTTP, но не увидите проблем с производительностью с FTP. Когда выполняется передача по FTP, задержка на самом деле не имеет значения, но с HTTP вы имеете дело с веб-страницами, которые могут иметь 50 или более отдельных HTTP-подтверждений, которые должны произойти. Соединения с высокой задержкой действительно замедлят этот процесс и сделают просмотр веб-страниц невыносимым.

Так или иначе, рекомендации Зефира Пеллерина верны. Если вы действительно думаете, что проблема в шифровании, в любом случае, переключитесь на другой шифр. Однако я бы посоветовал сначала изучить задержку, поскольку это кажется гораздо более вероятным кандидатом.

Этот поток заставил меня провести собственные тесты, и я обнаружил, что производительность зависит не только от разных шифров / MAC, но и от того, какие данные вы отправляете, какие процессоры задействованы и как настроена сеть.

Так что, IMO, правильное решение - запустить собственные тесты и найти лучшие настройки для вашей ситуации.

Если кому-то интересно, вот результаты моих тестов, сравнивающих сервер под управлением Intel E5506 с 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

Но только «10 лучших», полные результаты можно найти здесь.

Я смог скомпилировать sshd / ssh с шифром 'none' с помощью этого сообщения: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=24559#58

Это очень старый пост, но вам нужно внести 3 небольших изменения в файл исходного кода cipher.c. Затем перекомпилируйте код 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:

Так же none шифр нужно будет добавить в ваш /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

Ссылки ниже помогут вам получить исходный код ssh для систем Debian и Ubuntu:

Благодарим Дина Годе за то, что он потрясающий

Согласно этому очень красивому сообщению в блоге

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

Рекомендую установить следующие шифры. Также убедитесь, что сжатие отключено, если вы хотите добиться максимальной производительности в локальной сети. Обратите внимание, что это возможная угроза безопасности, используйте только в защищенной локальной сети (например, дома и т. Д.).

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

Измените первую строку, чтобы указать свои собственные IP-адреса в вашей локальной сети. Вы также можете указать имена хостов (через пробел). Это дает вам лучшую производительность scp в локальной сети.

ЕСЛИ вы хотите попробовать полностью незашифрованный и несжатый туннель, вы можете попробовать использовать что-то вроде rinetd для пересылки данных вместо SSH. Это исключило бы дополнительные функции SSH, в то же время предлагая простой двоично-безопасный туннель для TCP-соединений.

Когда вы говорите, что у вас дома быстрое соединение, вы уверены, что оно быстрое в обоих направлениях? Многие домашние соединения очень асимметричны (мой домашний ADSL, например, составляет ~ 11 Мбит нисходящего потока и ~ 1,5 Мбит восходящего потока, и многие из них хуже, некоторые из них я могу процитировать из друзей / родственников: 7 Мбит / с / 0,4 Мбит / с, 19 Мбит / с / 1,3 Мбит / с, 20 Мбит / с / 0,75M, ...). Помните, что если вы используете дом в качестве прокси, данные должны проходить по вашей ссылке в обоих направлениях, поэтому они будут перемещаться в лучшем случае на самой медленной из ваших нисходящих и восходящих скоростей, и у вас также есть дополнительная задержка, чтобы учесть ее. Кроме того, ваш интернет-провайдер может намеренно ограничивать восходящую коммуникацию (либо полностью, либо выборочно, чтобы не затрагивать такие вещи, как электронная почта и избранные популярные веб-сайты) в качестве способа отговорить людей, использующих серверы / прокси-серверы от своих домашних ссылок, хотя это относительно редко.

Я только что провел обширное тестирование, и набор шифров, который дал самую высокую пропускную способность, был aes-128-ctr с MAC umac64. На 4-ядерной машине с тактовой частотой 3,4 ГГц я видел почти 900 МБ / с через localhost (чтобы устранить узкие места в сети в целях тестирования)

Если вам действительно нужна такая высокая производительность, вам нужен новейший SSH и, возможно, HPN-SSH патчи.

Это один из вариантов SSH на стороне клиента, который я использовал для SSH-подключения к устройствам низкого уровня:

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

В последних версиях OpenSSH изначально не поддерживается ни один шифр. Однако, начиная с версии 7.6, OpenSSH удалил поддержку SSHv1 и пометил шифр "none" для внутреннего использования.

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

Затем вам потребуется установить исправления и перекомпилировать как на стороне сервера, так и на стороне клиента.

#define CFLAG_INTERNAL      0