ฉันจะปิดการใช้งานการเข้ารหัสบน openssh ได้อย่างไร


21

ฉันประสบปัญหาประสิทธิภาพการทำงานโดยใช้ openssh (เซิร์ฟเวอร์) และ putty (ไคลเอ็นต์) เพื่อใช้ webproxy ระยะไกล ฉันต้องการปิดใช้งานการเข้ารหัสและทดสอบผลลัพธ์เพื่อดูว่ามีความแตกต่างหรือไม่ ฉันจะทำสิ่งนั้นได้อย่างไร sshd_configมีอะไรที่ฉันสามารถปรับเปลี่ยนใน ฉันใหม่มากสำหรับ openssh

ความคิดอื่น ๆ จะได้รับการชื่นชม

ฉันได้กำหนดให้ IE ของฉันใช้ถุงเท้า 127.0.0.1 เป็นพร็อกซี ฉันเชื่อมต่อฉาบของฉันกับเซิร์ฟเวอร์ openssh ของฉันที่บ้านและ voila - ฉันสามารถท่องอินเทอร์เน็ตผ่านที่ อย่างไรก็ตามมันช้าอย่างไม่น่าเชื่อแม้ว่าฉันรู้ว่าฉันมีการเชื่อมต่อที่รวดเร็วไปยังบ้านของฉัน (ftp ตัวอย่างเช่นทำงานที่สูงกว่า 50Kbytes / วินาที


2
เป็นที่น่าเสียดายแพทช์ rot13 ( miranda.org/~jkominek/rot13 ) ไม่เคยติดบน ...
Kenster

5
ผมมีข้อสงสัยเป็นอย่างยิ่งว่าการเข้ารหัสที่ใช้โดย SSH เป็นต้นเหตุของการเชื่อมต่อที่ช้าของคุณตราบเท่าที่เซิร์ฟเวอร์ SSH ของคุณไม่ได้ทำงานบนนาฬิกาข้อมือดิจิตอลจาก 1980
Joschi

คำตอบ:


17

หากไม่รวบรวมข้อมูลซ้ำ ๆ ก็ไม่สามารถทำได้เท่าที่ฉันทราบ อย่างไรก็ตามคุณสามารถเปลี่ยนเป็น ARC4 หรือปักเป้าซึ่งรวดเร็วอย่างน่าทึ่งสำหรับฮาร์ดแวร์ที่ทันสมัย

ประสิทธิภาพที่ดีที่สุด (เท่าที่เกี่ยวข้องกับวงจรนาฬิกา) เพิ่มขึ้นคุณจะได้รับคือการเพิ่ม

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

หากคุณยังคิดว่านี่เป็นค่าใช้จ่ายที่มากเกินไปคุณสามารถเปลี่ยนกลับเป็น v1 หรือเพียงแค่ทำ VPN มาตรฐาน


3
หากการติดตั้ง OpenSSH ของคุณ (ที่ปลายทั้งสองด้าน) เป็นไปตามการรองรับ cypher "none" คุณสามารถระบุได้ แต่จะเอาชนะจุดประสงค์ทั้งหมดของsecure shell
voretaq7

1
สำหรับ C-inclined ในหมู่พวกเราคุณสามารถเพิ่มใน {"none", SSH_CIPHER_NONE, 8, 0, 0, EVP_enc_null} เป็น cipher.c ในอาร์เรย์ตัวเลข
ŹV -

3
ฉันสามารถชี้ให้เห็นว่าคุณสามารถใช้บางสิ่งบางอย่างเช่น socat ( dest-unreach.org/socat ) เพื่อทำสิ่งเดียวกันและหลีกเลี่ยงค่าใช้จ่ายโปรโตคอล SSH ทั้งหมด
ŹV -

ฉันคิดว่า umac-64 เป็นวิธีที่เร็วที่สุดของอัลกอริธึม mac
James Reinstate Monica Polk

96 bit MD5 นั้นรวดเร็วอย่างไม่น่าเชื่อในทุกกรณี
ŹV -

7

เว้นแต่ลูกค้าหรือเซิร์ฟเวอร์นั้นมีความอ่อนแออย่างมากฉันสงสัยอย่างมากว่ามันเป็นการเข้ารหัสที่ทำให้เกิดปัญหาประสิทธิภาพการทำงานของคุณ ผมใช้ "-D 8080" SSH ถุงเท้าพร็อกซี่อย่างสม่ำเสมอและมีอะไรที่ไม่เคยสังเกตเห็น แต่มากชะลอตัวลงเล็กน้อย

สิ่งหนึ่งที่ต้องตรวจสอบคือการดูว่าเวลาแฝงอยู่ระหว่างไคลเอนต์ของคุณและเซิร์ฟเวอร์ หากเป็นการเชื่อมต่อที่แฝงอยู่คุณจะเห็นประสิทธิภาพที่ไม่ดีเหนืออุโมงค์เมื่อใช้ HTTP ในขณะที่ไม่เห็นปัญหาประสิทธิภาพการทำงานกับ FTP เมื่อการถ่ายโอน FTP อยู่ในระหว่างดำเนินการความหน่วงจะไม่สำคัญ แต่ด้วย HTTP คุณกำลังติดต่อกับหน้าเว็บที่อาจมีการจับมือ HTTP 50 รายการขึ้นไปที่ต้องเกิดขึ้น การเชื่อมต่อที่มีความล่าช้าสูงจะทำให้กระบวนการนี้ช้าลงและจะทำให้การเรียกดูไม่สามารถทนทาน

อย่างไรก็ตามคำแนะนำที่ Zephyr Pellerin ทำขึ้นนั้นเป็นสิ่งที่ดี หากคุณคิดว่าการเข้ารหัสนั้นเป็นสาเหตุของปัญหาให้เปลี่ยนไปใช้รหัสอื่น ฉันขอแนะนำให้มองในเวลาแฝงก่อนเพราะมันน่าจะเป็นตัวเลือกที่มีความเป็นไปได้มากกว่า


+1 สำหรับสิ่งนี้ ... ปัญหาที่เกิดขึ้นไม่น่าจะเป็นการเข้ารหัสและเป็นไปได้มากกว่าการเชื่อมต่อกับโฮสต์ของคุณที่บ้านในตอนแรก
DaveG

16
ฉันหวังว่าผู้คนจะหยุดพูดว่าคุณไม่จำเป็นต้องทำสิ่งนี้และพูดคุยกันนานเกี่ยวกับประโยชน์และความหายนะของค่าใช้จ่ายในการเข้ารหัส (ถ้ามีหรือไม่มี) และลองตอบคำถาม ฉันไม่เห็นเหตุผลในการเพิ่มการเข้ารหัสซ้ำซ้อนสำหรับงานในพื้นที่ของฉันบนเครื่องของฉันซึ่งฉันต้องการการพิสูจน์ตัวตนอย่างน้อยที่สุด แต่การทำงานจาก localhost ไปยัง localhost นั้นไม่ต้องการการเข้ารหัส
Marius

5
ไม่เป็นความจริงลองคัดลอกไฟล์ขนาดใหญ่โดยใช้ scp บน gig-ethernet โหลด Intel iCore 5 เป็น 80%
lzap

@Izap> มีมากกว่านั้นเพียงแค่การเข้ารหัส การถ่ายโอนไฟล์ขนาดใหญ่โดยใช้ftp(โดยไม่ใช้ ssl) ทำให้ฉันได้โหลดซีพียู 20 ถึง 40% ด้วย ฉันตำหนิ gig-ethernet ราคาถูกที่ต้องการความสนใจจากซีพียูมากเกินไป
สเปกตรัม

เมื่อคุณใช้ SSH สำหรับการส่ง / รับ ZFS CPU จะเป็นคอขวด;)
Xdg

6

เธรดนี้ทำให้ฉันทำมาตรฐานของตัวเองและฉันพบว่าประสิทธิภาพนั้นไม่เพียงแค่ cipher / 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

แต่ ony ของ 10 อันดับ 'ผลสมบูรณ์สามารถพบได้ที่นี่


ผลลัพธ์ที่ไม่มีรหัส 'ไม่มี' ไม่สมบูรณ์สำหรับหัวข้อนี้ ฉันมี pogoplugv4 จำนวนมาก (รุ่นแขน 800Mhz = ช้า) และพวกเขามักจะตรึงซีพียูด้วย ssh นี่คือสาเหตุที่ผู้คนค้นหาตัวเลขไม่ การใช้ ssh / sshd cpu ที่ 100% หมายความว่าไม่ใช่ปัญหาเครือข่าย! ฉันหวังว่าฉันจะกลับมาและโพสต์ cipher = ไม่มีผลลัพธ์ ...
user2420786

คุณมีสคริปต์ที่คุณใช้ในการสร้างข้อมูลนี้หรือไม่? ฉันจะสนใจประสิทธิภาพของ ciphers ( chacha20-poly1305@openssh.com) ในปัจจุบันของฮาร์ดแวร์ในวันนี้
Jakuje

ทุกอย่างอยู่ในส่วนที่สำคัญ: gist.github.com/piccaso/b74209cc3396587892b4
Florian Fida

3

ฉันสามารถรวบรวม 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:

ขอมอบเครดิตให้กับ Dean Gaudet เพราะยอดเยี่ยม


2

ตามโพสต์บล็อกที่ดีมาก

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

ฉันแนะนำให้ตั้งค่า ciphers ต่อไปนี้ ตรวจสอบให้แน่ใจด้วยว่าปิดการบีบอัดถ้าคุณต้องการประสิทธิภาพที่ดีที่สุดใน LAN โปรดทราบว่านี่อาจเป็นความเสี่ยงด้านความปลอดภัยใช้เฉพาะใน LAN ที่ปลอดภัย (เช่นในบ้านและอื่น ๆ )

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

แก้ไขบรรทัดแรกเพื่อแสดงรายการ IP ของคุณเองใน LAN ของคุณ คุณสามารถระบุชื่อโฮสต์ (คั่นด้วยช่องว่าง) สิ่งนี้จะช่วยให้คุณได้ประสิทธิภาพที่ดีที่สุดบน LAN


1

หากคุณต้องการลองใช้อุโมงค์ที่ไม่ได้เข้ารหัสและไม่ได้บีบอัดอย่างสมบูรณ์คุณสามารถลองใช้สิ่งที่ต้องการrinetdส่งต่อข้อมูลแทน SSH สิ่งนี้จะลบล้างความพิเศษของ SSH ในขณะที่ยังเสนอช่องสัญญาณไบนารีปลอดภัยแบบธรรมดาสำหรับการเชื่อมต่อ TCP

เมื่อคุณพูดว่าคุณมีการเชื่อมต่อที่รวดเร็วที่บ้านคุณแน่ใจหรือว่ามันรวดเร็วทั้งสองทิศทาง? การเชื่อมต่อที่บ้านหลายแห่งนั้นไม่สมดุล (ตัวอย่างเช่น ADSL ที่บ้านของฉันคือ ~ 11Mit downstream และ ~ 1.5Mbit upstream และอีกมากมายนั้นแย่กว่านั้นฉันสามารถอ้างอิงจากเพื่อน / ครอบครัวที่เชื่อมต่อ: 7M / 0.4M, 19M / 1.3M, 20M / 0.75M, ... ) โปรดจำไว้ว่าหากคุณใช้งานที่บ้านเป็นพร็อกซีข้อมูลจะต้องผ่านลิงค์ของคุณทั้งสองวิธีดังนั้นจะเป็นการดีที่สุดที่ช้าที่สุดของความเร็วดาวน์สตรีมและอัปสตรีมของคุณและคุณมีเวลาแฝงอันมากเป็นพิเศษที่จะรวมอยู่ด้วย ISP ของคุณอาจจงใจเร่งการสื่อสารอัปสตรีม (ทั้งแบบครอบคลุมหรือแบบเลือกเพื่อให้สิ่งต่าง ๆ เช่นอีเมลและเว็บไซต์ยอดนิยมที่เลือกไม่ได้รับผลกระทบ) เป็นวิธีการกีดกันผู้ใช้เซิร์ฟเวอร์ / พร็อกซี่จากลิงก์บ้านของพวกเขา


ssh เป็นมาตรฐานในเครื่องส่วนใหญ่ rinetd ไม่ได้อยู่ในบางส่วน แต่ขอบคุณสำหรับคำแนะนำ
Marius

จากนั้นคุณควรลอง netcat / nc
ThorstenS

0

ฉันเพิ่งทำการทดสอบอย่างละเอียดเกี่ยวกับเรื่องนี้และชุดรหัสที่ให้ปริมาณงานมากที่สุดคือ aes-128-ctr กับ umac64 MAC บนเครื่อง 3.4GHz แบบ 4 คอร์ฉันเห็นเกือบ 900MBytes / วินาทีผ่าน localhost (เพื่อกำจัดปัญหาคอขวดของเครือข่ายเพื่อการเปรียบเทียบ)

หากคุณต้องการประสิทธิภาพมากขนาดนั้นคุณต้องการ SSH รุ่นล่าสุดและอาจเป็นHPN-SSH patches


0

นี่เป็นตัวเลือก 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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.