วิธีเพิ่มความเร็วในการเข้าสู่ระบบ ssh ช้าเกินไป?


42

การวิ่งssh user@hostnameใช้เวลา ~ 30 วินาที นี่คือสถานการณ์:

  • นี่คือ VM บน LAN ท้องถิ่น
  • เครื่อง Windows และ Mac ได้รับการเข้าสู่ระบบทันที
  • กำลังใช้ Debian และฉันสามารถทำซ้ำได้ด้วยเครื่อง Ubuntu
  • บางคนที่ใช้ Ubuntu บอกว่าการล็อกอินเข้าสู่เครื่องของฉัน (LAN ท้องถิ่น) ก็เป็นได้ทันที
  • การใช้ที่อยู่ IP ชื่อโฮสต์จะใช้เวลาประมาณครึ่งเดียว (~ 15s)

[ อัพเดท ]

ใช้ssh -vvv user@hostnameนี่คือที่ที่จะรอมากที่สุด:

debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic

และจากนั้นรอสักครู่ที่นี่:

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

debug1: Unspecified GSS failure.  Minor code may provide more information
Credentials cache file '/tmp/krb5cc_1000' not found

1
คุณใช้รหัสผ่านหรือรับรองความถูกต้อง pubkey? และถ้ารหัสผ่านเป็นid_dsaหรือid_rsaในไฟล์ของคุณ~/.ssh? บางทีการติดตั้ง ssh ของคุณจะลองใช้การรับรองความถูกต้องที่ผิดก่อนและเซิร์ฟเวอร์ของคุณไม่ได้ปฏิเสธ แต่เพียงเพิกเฉยต่อคำขอนั้นที่ทำให้หมดเวลา 30 วินาที
Tobias Kienzler

@tobias ฉันใช้รหัสผ่านและฉันไม่มี"~/.ssh"ไฟล์ นั่นเป็นไดเรกทอรีและมี"known_hosts"ไฟล์อยู่ในนั้นเท่านั้น
tshepang

5
ดูเหมือนว่าคุณจะมี DNS หมดเวลา 15 วินาที บางทีเซิร์ฟเวอร์กำลังทำการค้นหา DNS หากคุณสามารถตรวจสอบให้แน่ใจว่าคุณมีUseDNS noในsshd_configเซิร์ฟเวอร์ ไม่ว่าในกรณีใดให้เรียกใช้ssh -vvv user@hostnameเพื่อดูว่าการลงชื่อเข้าใช้หยุดทำงานที่ใด
Gilles 'หยุดความชั่วร้าย'

@gil ขอบคุณ ฉันอัพเดทคำถาม ฉันจะขอให้ผู้ดูแลระบบตรวจสอบการตั้งค่าUseDNS
tshepang

3
@Tshepang: โอ้คุณใช้การตรวจสอบสิทธิ์ Kerberos (GSSAPI) ฉันไม่คุ้นเคยกับมัน หากมีการกำหนดค่าผิดพลาดอาจเป็นสาเหตุของความล่าช้า นี่คือสิ่งที่คุณสามารถขอให้ผู้ดูแลระบบของคุณ DNS อาจเป็นปลาเฮอริ่งแดง เป็นสาเหตุที่พบบ่อยที่สุดในป่า แต่บางทีปัญหาของคุณแตกต่างกัน
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


32

แก้ไข " / etc / ssh / ssh_config " ของคุณและใส่เครื่องหมายบรรทัดเหล่านี้:

GSSAPIAuthentication yes
GSSAPIDelegateCredentials no

3
+1 คำตอบที่ดี! (1) เป็นความเร็วปกติหรือไม่ที่การเชื่อมต่อเข้าสู่ระบบ ssh จะใช้เวลาเคอร์เซอร์กะพริบ 7 ครั้งหรือไม่? (2) ทำไมมันทำงานโดยการแสดงความคิดเห็นออก GSSAPIAuthentication yesและGSSAPIDelegateCredentials no? @Tshepang
ทิม

@Tim (1) ยาวเกินไป ... ขึ้นอยู่กับการเชื่อมต่อฉันไม่คาดหวังว่าจะใช้เวลานานกว่า 2 วินาที; (2) ฉันไม่รู้เลยว่ามันใช้ได้
tshepang

1
ค่าเริ่มต้นสำหรับ GSSAPIA การรับรองใน OpenSSH เวอร์ชันส่วนใหญ่คือ "ไม่" แต่ distros บางตัวตั้งค่าเป็น "ใช่" ในไฟล์ sshd_config และ ssh_config หากคุณไม่ต้องการ / ใช้งานมันจะทำให้การเชื่อมต่อ / การรับรองความถูกต้องช้าลง
tgharold

หากใช้การตรวจสอบสิทธิ์ LDAP / AD อยู่จะไม่ปิดใช้งาน GSSAPI ซึ่งจะทำให้มีการใช้การเชื่อมโยงอย่างง่ายและอาจส่งรหัสผ่านผ่านเครือข่ายแบบธรรมดาหรือไม่
แชนนอน

ตรวจสอบเนมเซิร์ฟเวอร์ทั้งหมดที่ยังคงอยู่ใน /etc/resolv.conf หากพวกเขาทำไม่ได้พาพวกเขาออกไป นี่เป็นการแก้ไขปัญหาของฉัน
นักเทคโนโลยีจาก

30

ฉันมีปัญหานี้และแก้ไขได้โดยปิดการแก้ปัญหา Reverse DNS ใน SSH

ดังนั้นในsshd_configบนเซิร์ฟเวอร์การเปลี่ยนแปลงนี้:

 #UseDNS yes

สำหรับสิ่งนี้:

UseDNS no

1
ฉันได้ทำการเปลี่ยนแปลง (แม้ว่าฉันจะไม่มีความคิดเห็นตัวเลือกUseDNS ) ตั้งค่าเซิร์ฟเวอร์ ssh ของฉันและยังคงเป็นปัญหาเดียวกัน
tshepang

2
@Tshe hmm แปลก ปัญหาความเร็วเดียวที่ฉันเคยมีกับ SSH เป็นเพราะเรื่องนี้
Earlz

1
ฉันไม่เชื่อเพราะฉันใช้เข้าสู่ระบบโดยใช้ที่อยู่ IP (LAN ภายในบ้าน) แต่วิธีนี้แก้ไขปัญหาของฉันได้ เพื่อประโยชน์ของ Google แม้ว่าจะเกิดขึ้นหลังจากนั้นความล่าช้าก็ไม่เกี่ยวข้องกับข้อความ "key: /home/mylogin/.ssh/id_ecdsa ((ไม่มี))" (เมื่อทำงานssh -vvv)
Skippy le Grand Gourou

7

คุณยืนยันการตั้งค่า DNS ของคุณแล้วหรือยัง

ลองตั้งค่าในmdns off/etc/host.conf

สิ่งนี้ปิดใช้งานความละเอียด mdns และช่วยฉันได้มาก

แก้ไข:

ดูเหมือนว่า gentoo กำลังจัดการสิ่งนี้แตกต่างกันเล็กน้อย เพื่อปิดการใช้งานการค้นหา DNS /etc/nsswitch.confหลายผู้รับคุณต้องเปลี่ยนไฟล์
ควรมีลักษณะดังนี้:

hosts:          files mdns

เปลี่ยนเป็น:

hosts:          files dns

+1 ความคิดที่ดี @Tshepang ssh เชื่อมต่อเร็วขึ้นเมื่อคุณใช้ IP ของชื่อโฮสต์โดยตรงหรือไม่
โทเบียส Kienzler

@tobias ใช้เวลาครึ่งเวลา
tshepang

ฉันได้รับ/etc/host.conf: line 2: bad command mDNS off'` ssh user@hostnameเมื่อผมทำงาน
tshepang

ดูเหมือนว่านี้คือการตั้งค่าที่ล้าสมัยตั้งแต่ glibc 2.3.x (2006): forums.gentoo.org/viewtopic-t-476558-highlight-mdns.html คุณใช้อะไร (OS, glic version)?
tshepang

1
คุณกำลังบอกว่าใช้เวลาเพียงครึ่งเดียวเมื่อคุณใช้ที่อยู่ IP ซึ่งหมายความว่าคุณมีปัญหาในการแก้ไขชื่อ (IP => FQDN หรือ FQDN => IP) ดังนั้นก่อนอื่นให้ดูที่การกำหนดค่า DNS ของคุณจากนั้นลองค้นหาว่าคุณมีปัญหากับ ssh หรือไม่
Christian

3

/etc/hostsบางครั้งการเพิ่มชื่อโฮสต์ให้สามารถแก้ไขปัญหานี้ได้


ใช้งานได้กับชื่อโฮสต์เดียว แต่โซลูชันของ Earlz นั้นเป็นชื่อสามัญมากกว่า (และแก้ไขปัญหาเดียวกัน)
Skippy le Grand Gourou

1

ตรวจสอบด้วยว่าnscdมีการติดตั้งและใช้งานอยู่หรือไม่

การไม่มีแคช dns สามารถเพิ่มเวลาที่ใช้ในการแก้ไขเรกคอร์ด PTR (สมมติว่าไคลเอ็นต์ ssh กำลังทำการค้นหา dns reverse สำหรับที่อยู่ IP ของเซิร์ฟเวอร์)


0

ฉันมีปัญหาเดียวกันในสภาพแวดล้อม Windows 2008 R2 แต่ "useDNS no" ไม่ทำงาน

ฉันลองเพิ่มลงในไฟล์โฮสต์ IP และโฮสต์ของเซิร์ฟเวอร์การเชื่อมต่อและเร็วขึ้น 30 วินาที ซึ่งทำให้ฉันคิดว่าการแก้ไขอาจอยู่ใน DNS

ฉันลองเพิ่มเซิร์ฟเวอร์ DNS แต่ไม่สามารถแก้ไขได้

เซิร์ฟเวอร์ของฉันมีส่วนต่อท้าย DNS สองตัว 1 สำหรับโดเมนองค์กรที่มีเซิร์ฟเวอร์ (domain.com) และอีกโดเมนหนึ่งสำหรับอินเทอร์เฟซภายนอกที่เชื่อมต่อกับเครือข่ายส่วนตัว (domain.net)

ลำดับต่อท้าย DNS คือ domain.net ก่อนจากนั้น domain.com ต่อไป

ลูกค้า SFTP / SSH ของฉันอยู่ในโดเมนของ บริษัท โดยวิธีการที่ลูกค้ามีปัญหามาจากโดเมนองค์กร

สิ่งที่ใช้ได้กับฉันคือฉันสร้าง domain.com ก่อนจากนั้น domain.net อันดับที่สอง

ความล่าช้าในการเชื่อมต่อ 2m30s ก่อนหน้านั้นจะกลายเป็น 3-4 วินาทีเท่านั้น

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