การเชื่อมต่อ SSH: ssh_exchange_identifcation


9

ฉันได้เชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลผ่าน Mac ของฉันเป็นเวลาประมาณหนึ่งเดือนแล้ว แต่ล่าสุดฉันพยายามเชื่อมต่อโดยใช้ ssh dylan @ MY_IP และได้รับข้อความนี้

ssh_exchange_identification: read: Connection reset by peer

ฉันยังได้รับข้อมูลการวินิจฉัยบางอย่าง ...

debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to {MY IP{ [MY IP] port 22.
debug1: Connection established.
debug1: identity file /Users/watson/.ssh/id_rsa type -1
debug1: identity file /Users/watson/.ssh/id_rsa-cert type -1
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/watson/.ssh/id_dsa" as a RSA1 public key
debug1: identity file /Users/watson/.ssh/id_dsa type 2
debug1: identity file /Users/watson/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2

หลังจากทำการวิจัยบางอย่างฉันลองต่อไปนี้ ...

  1. รีสตาร์ทเราเตอร์ของฉัน
  2. ล้างไฟล์ "known_hosts" ของฉัน
  3. ลบไฟล์ "known_hosts" ของฉัน
  4. เผยแพร่และต่ออายุ DHCP ของฉัน
  5. ฉันได้ลองจากอุปกรณ์อื่น (Windows) โดยใช้ Putty ด้วยข้อผิดพลาดเช่นกัน

โปรดทราบว่าฉันไม่ได้ทำการเปลี่ยนแปลงใด ๆ กับเซิร์ฟเวอร์เพื่อยับยั้งการสื่อสารนี้

นอกจากนี้ฉันไม่แน่ใจว่าสิ่งนี้จะทำให้เกิดปัญหาหรือไม่ แต่ฉันเชื่อมต่อกับชื่อโดเมนและเป็น IP

นอกจากนี้ฉันสามารถเชื่อมต่อจากที่อยู่ IP อื่นได้สำเร็จ

ฉันรู้ว่านี่เป็นปัญหาใหญ่ที่มีทรัพยากรจำนวนมากอยู่ที่นั่น แต่โซลูชันจำนวนมากไม่ทำงานและฉันก็ไม่เห็นว่าจะมีวิธีแก้ปัญหาแบบใดสำหรับใคร

ปรับปรุง

ฉันบังคับให้โปรโตคอล 1 แทน "การเชื่อมต่อรีเซ็ตโดยเพียร์" ตอนนี้ฉันได้รับ "การเชื่อมต่อปิดโดยโฮสต์ระยะไกล" เปิดใช้งานด้วยข้อมูลการดีบักที่เปิดเผย:

debug1: Reading configuration data /etc/ssh_config
debug1: /etc/ssh_config line 20: Applying options for *
debug1: /etc/ssh_config line 53: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to MY_IP [MY_IP] port 22.
debug1: Connection established.
debug1: identity file /Users/watson/.ssh/identity type -1
debug1: identity file /Users/watson/.ssh/identity-cert type -1
ssh_exchange_identification: Connection closed by remote host

คุณใช้การพิสูจน์ตัวตนรหัสสาธารณะหรือไม่ คุณมีรหัสใด ๆ/Users/watson/.ssh/id_dsaหรือไม่? ลองสำรองไฟล์และลบออก
pabouk

ฉันไม่ใช้การพิสูจน์ตัวตนด้วยรหัสสาธารณะ อย่างไรก็ตามมีคีย์เดียวในไฟล์ ฉันพยายามลบไฟล์ แต่ไม่มีการเปลี่ยนแปลงใด ๆ ในการรันคำสั่ง
Dylan

หากเป็นปัญหากับรุ่นโปรโตคอลคุณสามารถบังคับให้เชื่อมต่อกับรุ่นโปรโตคอล 1 ด้วยssh -1 ...
wkaha

อ้างถึงการแก้ไขใหม่ในโพสต์
Dylan

คำตอบ:


4

นี่คือวิธีที่ฉันแก้ไขข้อผิดพลาด "ssh_exchange_identification: การเชื่อมต่อปิดโดยโฮสต์ระยะไกล" เมื่อเชื่อมต่อกับเซิร์ฟเวอร์ SSH

ฉันได้รับข้อผิดพลาดนี้เมื่อพยายามเชื่อมต่อกับเครื่อง Linux ที่ฝังตัวอยู่หลังจากคลายแพ็กเกจไปยังรูท ไฟล์ไลบรารีจำนวนมากถูกแทนที่รวมถึง libssl

กำลังพยายามเชื่อมต่อ:

chetic@ubuntu:~$ ssh -v root@192.168.1.100
OpenSSH_6.2p2 Ubuntu-6ubuntu0.3, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: Applying options for *
debug1: Connecting to SC [192.168.1.100] port 22.
debug1: Connection established.
debug1: identity file /home/delaval/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/delaval/.ssh/id_rsa-cert type -1
debug1: identity file /home/delaval/.ssh/id_dsa type -1
debug1: identity file /home/delaval/.ssh/id_dsa-cert type -1
debug1: identity file /home/delaval/.ssh/id_ecdsa type -1
debug1: identity file /home/delaval/.ssh/id_ecdsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2p2 Ubuntu-6ubuntu0.3
ssh_exchange_identification: read: Connection reset by peer

Googling ดูเหมือนจะแนะนำให้ตรวจสอบ hosts.deny และ hosts.allow เท่านั้น แต่เครื่องเป้าหมายของฉันไม่มีไฟล์ดังกล่าว

หลังจากรีบูตเครื่อง (ตามคำแนะนำของ Karthik) sshd ไม่ทำงาน ฉันพยายามเริ่มต้นด้วยตนเอง sshd ตามเป้าหมาย:

# sshd
OpenSSL version mismatch. Built against 1000002f, you have 1000105f

ฉันแทนที่ /usr/lib/libssl.a ด้วยเวอร์ชันดั้งเดิมและเริ่ม sshd และสิ่งต่าง ๆ กลับมาเป็นปกติ ปัญหาเกิดขึ้นในกรณีของฉันที่เกิดจากรุ่นที่ไม่ถูกต้องในแพ็คเกจที่ฉันเปิดเครื่องไปที่รูท


3

ฉันได้รับข้อผิดพลาดเดียวกัน (แต่จากเครื่องใด ๆ รวมถึงเครื่องที่ลำบากผ่านssh localhost)

มันเริ่มต้นเมื่อฉันย้ายโปรไฟล์ผู้ใช้; คือหลังจากคัดลอกไฟล์เป็นรูทแล้วคำสั่งก็เช่นกันchown -R username /Users/username/Destop

อย่างไรก็ตามไม่แน่ใจว่าทำไมเจ้าของ / var / ว่างถูกเปลี่ยนเป็นชื่อผู้ใช้ แต่sshต้อง/var/emptyเป็นเจ้าของโดย root (มิฉะนั้นคุณจะได้รับssh_exchange_identification: read: Connection reset by peer):

    sudo chown root /var/empty

ขอบคุณ! การเปลี่ยนเจ้าของ/var/emptyแก้ไขปัญหาให้ฉัน
Yevhen Pavliuk

1

นี่ไม่ใช่ปัญหากับเครื่องภายในเครื่องของคุณ แต่มีปัญหาทางฝั่งเซิร์ฟเวอร์ อาจมีหลายปัจจัยที่ทำให้เกิดปัญหานี้:

  1. การเปลี่ยนแปลงในการกำหนดค่า /etc/hosts.allow หรือ /etc/hosts.deny บนเซิร์ฟเวอร์ระยะไกล
  2. โหลดเซิร์ฟเวอร์จำนวนมาก

ในอดีตเมื่อฉันมีปัญหาเหล่านี้ฉันได้ทำหนึ่งในสองสิ่งตามลำดับต่อไปนี้:

  1. แก้ไข /etc/hosts.allow ตามที่อ้างอิงในบทความด้านบน (และรีสตาร์ทเซิร์ฟเวอร์ SSH)
  2. หาก /etc/hosts.allow เป็นที่ต้องการอยู่แล้วเพียงรีสตาร์ทเซิร์ฟเวอร์ SSH (และระวังเมื่อคุณทำสิ่งนี้!)
  3. หากการรีสตาร์ทไม่ทำงานให้สร้างคีย์เซิร์ฟเวอร์ขึ้นใหม่และรีสตาร์ทเซิร์ฟเวอร์ SSH (มีความเสี่ยงเนื่องจากผู้ใช้ทุกคนที่ลงชื่อเข้าใช้เครื่องนี้จะได้รับข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ที่มีการเปลี่ยนคีย์)

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


1

ฉันตั้ง SSH ไว้กับ Cygwin และในกรณีของฉันมันเป็นไฟร์วอลล์ Windows ที่ทำให้เกิดข้อผิดพลาดนี้อย่างแน่นอนดังนั้นให้แน่ใจว่าได้อนุญาตการเชื่อมต่อกับพอร์ต 22


0

ฉันจัดการเพื่อแก้ไขปัญหานี้ได้อย่างง่ายดายจริงๆ

ใน OS X ปกติคุณสามารถแก้ปัญหานี้ได้โดยเพียงแค่สลับ "Remote Login" ใน System Preferences / Sharing

อย่างไรก็ตามหากเป็นเซิร์ฟเวอร์หัวขาด (เช่นในกรณีของฉัน) คุณสามารถใช้แอปเซิร์ฟเวอร์ OSX เพื่อไปที่ (ชื่อเซิร์ฟเวอร์คุณ) / การตั้งค่าและสลับ "เปิดและปิดการเชื่อมต่อเชลล์ที่ปลอดภัย"


1
ฉันสังเกตเห็นด้วยว่าวิธีที่คุณสามารถแก้ไขปัญหาได้ แต่ไม่สามารถแก้ไขได้: การปิดใช้งานการลงชื่อเข้าใช้จากระยะไกลส่งผลกระทบต่อระบบอย่างรุนแรงและต้องสลับการลงชื่อเข้าใช้จากระยะไกลทุกครั้งที่ต้องการแก้ไขบางสถานที่ .
Ant6n

ใช่นี่ยังคงเป็นปัญหาที่น่ากลัวที่ฉันมี ฉันเพิ่งสร้างสคริปต์รูท cron ซึ่งจะเริ่มบริการใหม่ทุกเที่ยงคืน
ไซเรน

0

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

sudo chmod 660 File_Name


1
(1) แม้ว่านี่อาจเป็นสาเหตุของการsshไม่ทำงาน แต่ก็ไม่ชัดเจนว่าปัญหานี้จะสร้างระบบการทำงานแบบสุ่มได้อย่างไร (2) คำตอบเช่นนี้จะมีประโยชน์มากกว่าที่คุณระบุไฟล์ที่คุณกำลังพูดถึงหรือให้คำแนะนำเพื่อให้ผู้ใช้สามารถระบุได้ (3) ฉันเดาว่าคุณกำลังพูดถึงไฟล์ใน (ใต้) โฮมไดเรกทอรีของผู้ใช้ หากเป็นกรณีนี้sudoไม่ควรจำเป็น
สกอตต์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.