การระบุโฮสต์รีโมต ssh มีการเปลี่ยนแปลง


619

ฉันได้ติดตั้งเซิร์ฟเวอร์ของฉันใหม่และฉันได้รับข้อความเหล่านี้:

[user@hostname ~]$ ssh root@pong
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
6e:45:f9:a8:af:38:3d:a1:a5:c7:76:1d:02:f8:77:00.
Please contact your system administrator.
Add correct host key in /home/hostname /.ssh/known_hosts to get rid of this message.
Offending RSA key in /var/lib/sss/pubconf/known_hosts:4
RSA host key for pong has changed and you have requested strict checking.
Host key verification failed.

ฉันลองใช้วิธีแก้ไขปัญหาต่าง ๆ ที่ฉันพบบนอินเทอร์เน็ต ฉันknown_hostsไฟล์ (ปกติ~/.ssh/known_hosts) /var/lib/sss/pubconf/known_hostsอยู่ใน ฉันพยายามแก้ไข แต่ยังคงอยู่ในสถานะเดียว ฉันได้ติดตั้งipa-clientและมี Fedora 19 แล้วฉันจะแก้ไขคำเตือนนี้ได้อย่างไร

คำตอบทั้งหมดที่ได้รับคำตอบจนถึงตอนนี้ก็ต่อเมื่อคุณไม่ได้ติดตั้ง Freeipa

คำตอบที่เหมาะสมสำหรับ freeipa ในความคิดเห็นด้านล่างจาก adrin เป็นที่นี่


1
เพิ่งค้นพบวิธีที่ยากที่ปัญหานี้อาจเกิดขึ้นได้หากคุณมีที่อยู่ IP ขัดแย้งกันค้นหา
nsip

1
มีการหยุดชะงักที่นี่ อันนี้ถูกทำเครื่องหมายว่าซ้ำกันดังนั้นจึงไม่มีใครสามารถเพิ่มคำตอบและอันที่มันลิงก์ถูกทำเครื่องหมายปิดหัวข้อเพื่อไม่สามารถเพิ่มคำตอบได้เช่นกัน หากคุณลบ known_hosts มันจะแก้ไขปัญหาเช่นกัน
zar

1
ผมมีปัญหาเดียวกัน. เพื่อประโยชน์ของฉันและคนอื่น ๆ ต่อไปนี้เป็นคำถามและคำตอบของฉัน: superuser.com/questions/1071204/ /
adrin

3
ในขณะที่มีคนต้องการยืนยันกุญแจของพวกเขาก่อนอื่นฉันพบว่าคำตอบนี้มีประโยชน์ askubuntu.com/a/83499/620623
Declan McKenna

ตามที่ sharrajesh กล่าวถึง: ตรวจสอบรายการ DNS ของคุณ (ใน FreeIPA สำหรับฉัน) และดูว่าคุณไม่มีรายการ A หลายรายการที่มี IP ที่ไม่สามารถเข้าถึงได้จากเครือข่าย
th3penguinwhisperer

คำตอบ:


1071

นี่คือทางออกที่ง่ายที่สุด

ssh-keygen -R <host>

ตัวอย่างเช่น,

ssh-keygen -R 192.168.3.10

จากssh-keygenหน้าคน :

  • -R hostnameลบคีย์ทั้งหมดที่เป็นของชื่อโฮสต์ออกจากไฟล์ known_hosts ตัวเลือกนี้มีประโยชน์ในการลบโฮสต์ที่ถูกแฮช (ดูตัวเลือก -H ด้านบน)

ฉันอยู่บน Windows และโซลูชันนี้และไม่ลบคีย์ทำงานฉันควรลองอะไรอีก
jaycode

5
เอาล่ะปรากฎบน Windows ฉันต้องใช้เทอร์มินัลจาก git bash สำหรับสิ่งนี้ (หรือเทอร์มินัล MingW32) เขี้ยวลากดิน
jaycode

25
ssh-keygen -R [127.0.0.1]:3022เก็บไว้ในใจว่าถ้าคุณเชื่อมต่อผ่านพอร์ตเฉพาะที่คุณอาจจะต้องลบด้วยไวยากรณ์เช่น เพียงตรวจสอบไฟล์. ssh / known_hosts ของคุณเพื่อดูว่าไฟล์ดังกล่าวพูดอย่างชัดเจนหรือไม่
Adam Johns

4
เมื่อฉันลองทำสิ่งนี้ฉันจะได้รับข้อผิดพลาด "<hostname> ไม่พบใน ~ / .ssh / known_hosts"
Nodeocrat

3
เหตุใดคำเตือนนี้จึงเกิดขึ้น
Vilas Joshi

199

ใช้

ssh-keygen -R [hostname]

ตัวอย่างที่มีที่อยู่ IP / ชื่อโฮสต์จะเป็น:

ssh-keygen -R 168.9.9.2

การดำเนินการนี้จะอัปเดตการละเมิดโฮสต์ของคุณจาก known_hosts คุณยังสามารถระบุพา ธ ของ known_hosts ด้วยแฟล็ก -f


1
การลบคีย์ที่เกี่ยวข้อง$ ssh-keygen -R {server.name.com}| $ ssh-keygen -R {ssh.server.ip.address}| $ ssh-keygen -R server.example.com
DaddyMoe

5
คำตอบที่ไม่มีคำอธิบายทำให้ upvotes มาก .. ไม่ต้องกังวลเรื่องความปลอดภัยไม่มีคำอธิบาย .... -1
Daniel W.

4
นอกจากนี้ยังดูเหมือนกับสำเนาของคำตอบอื่น ๆ ด้านล่าง ช่วยกันทำความสะอาดสิ่งนี้ด้วย ...
Daniel W.

115

ฉันมีข้อผิดพลาดเดียวกันนี้เกิดขึ้นหลังจากที่ฉันสร้างอิมเมจ Digital Ocean Ubuntu ขึ้นมาใหม่ ฉันใช้คำสั่งต่อไปนี้กับ IP เซิร์ฟเวอร์ของฉันแทน[IP_ADDRESS]

ssh-keygen -R [IP_ADDRESS]

ขอบคุณมาก! ฉันใช้ชื่อโฮสต์และใช้งานได้กับ IP_ADDRESS :)
J. Lopes

1
สิ่งนี้ทำเพื่อฉันและควรเป็นคำตอบที่ยอมรับได้ ฉันไม่รู้ว่าทำไมมีคำตอบนี้สองชุดที่มาในภายหลังและทั้งคู่มี upvotes มากกว่า
Wylliam Judd

คุณไม่ใช่ข้อผิดพลาดเดียวกัน เซิร์ฟเวอร์ของคุณไม่ได้ใช้งาน SSSD ดู OP
Mercury00

39

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

เพียงลบคีย์ออกจาก known_hosts โดยการลบรายการที่เกี่ยวข้อง:

sed '4d' -i /var/lib/sss/pubconf/known_hosts

4dอยู่ในบัญชีของOffending RSA ...known_hosts:4


1
ขอบคุณ แต่ฉันไม่รู้ว่าทำไม แต่ฉันลบออกและมันอยู่ในนั้นอีกครั้ง ฉันพยายามหยุดบริการ sssd และเอฟเฟกต์นี้หายไป แต่หลังจากเริ่ม sssd จะปรากฏขึ้นอีกครั้ง
Filip Dobrovolný

สำรองข้อมูลไดเรกทอรี ~ / .ssh ของคุณแล้วลบทิ้ง บริการของคุณยังคงเพิ่มคีย์อีกครั้งหลังจาก ~ / .ssh ถูกพัดหายไปหรือไม่
mockinterface

ฉันได้เปลี่ยนชื่อ. ssh เป็น. ssh_old หลังจากลองใหม่เพื่อเชื่อมต่อมันก็แค่สร้างไดเรกทอรีว่าง. ssh และฉันยังคงไม่สามารถ / var / lib / sss / pubconf / known_hosts "แก้ไขได้"
Filip Dobrovolný

4
วิธีการพกพาที่ทำได้มากกว่านี้: sed -i -e 4d /var/lib/sss/pubconf/known_hosts
Pierz

2
คุณสำรองข้อมูลเซิร์ฟเวอร์identificationในกรณีที่คุณต้องการสร้างเซิร์ฟเวอร์ใหม่โดยไม่ทำให้เกิดการหยุดชะงักเช่นข้อความแสดงข้อผิดพลาดนี้ได้อย่างไร
Ninjaxor

38

ค้อนขนาดใหญ่คือการลบทุกพื้นที่ที่รู้จักในหนึ่งก้ม:

rm ~/.ssh/known_hosts

ฉันเห็นด้วยกับสิ่งนี้เมื่อเราใช้เซิร์ฟเวอร์ย่อยขนาดเล็กของเซิร์ฟเวอร์ระยะสั้นจากกล่องกระโดดและมักจะมีที่อยู่ IP ภายในใช้ซ้ำของเซิร์ฟเวอร์ที่ใช้คีย์ ssh เดียวกัน


ทำงานกับฉันใน VM ที่คนจรจัดเมื่อคำตอบที่ยอมรับไม่ทำงาน
100pic

1
เครื่องมือที่มีประโยชน์ที่จะมีในสายพาน แต่สิ่งนี้อาจเปิดคุณขึ้นมาสำหรับการโจมตี MitM (สิ่งที่แน่นอนที่known_hostsมีไว้เพื่อป้องกัน) เพียงทำเช่นนี้หากคุณมั่นใจว่าทั้งหมดของครอบครัวในนั้นมีความปลอดภัย
Freedom_Ben

26

ปัญหาคือก่อนหน้านี้คุณยอมรับการเชื่อมต่อ SSH กับคอมพิวเตอร์ระยะไกลและลายนิ้วมือดิจิตอลของคอมพิวเตอร์ระยะไกลนั้นหรือรหัสแฮช SHA256 มีการเปลี่ยนแปลงตั้งแต่คุณเชื่อมต่อครั้งล่าสุด ดังนั้นเมื่อคุณพยายามที่จะ SSH อีกครั้งหรือใช้ GitHub เพื่อดึงรหัสซึ่งยังใช้ SSH คุณจะได้รับข้อผิดพลาด ทำไม? เพราะคุณกำลังใช้ที่อยู่คอมพิวเตอร์ระยะไกลเหมือนเดิม แต่คอมพิวเตอร์ระยะไกลตอบสนองด้วยลายนิ้วมือที่แตกต่างกัน ดังนั้นจึงมีความเป็นไปได้ที่มีคนปลอมแปลงคอมพิวเตอร์ที่คุณเชื่อมต่อก่อนหน้านี้ นี่เป็นปัญหาด้านความปลอดภัย

หากคุณแน่ใจ 100% ว่าคอมพิวเตอร์ระยะไกลไม่ได้ถูกบุกรุกถูกแฮ็กถูกหลอกและอื่น ๆ สิ่งที่คุณต้องทำคือลบรายการในไฟล์ known_hosts ของคุณสำหรับคอมพิวเตอร์ระยะไกล นั่นจะช่วยแก้ปัญหาเนื่องจากไม่มีการจับคู่กับรหัสลายนิ้วมือ SHA256 อีกต่อไปเมื่อทำการเชื่อมต่อ

สำหรับ Mac นี่คือสิ่งที่ฉันทำ:

1) ค้นหาบรรทัดของเอาต์พุตที่อ่านRSA host key for servername:port has changed and you have requested strict checking.คุณจะต้องใช้ชื่อเซิร์ฟเวอร์และพอร์ตที่อาจเกิดขึ้นจากเอาต์พุตบันทึกนั้น

2) สำรองไฟล์โฮสต์ SSH ที่รู้จัก cp /Users/yourmacusername/.ssh/known_hosts /Users/yourmacusername/.ssh/known_hosts.bak

3) ค้นหาบรรทัดที่เก็บลายนิ้วมือเก่าของคอมพิวเตอร์และลบทิ้ง คุณสามารถค้นหาลายนิ้วมือคอมพิวเตอร์ระยะไกลที่ละเมิดโดยใช้ชื่อเซิร์ฟเวอร์และพอร์ตจากขั้นตอนที่ 1nano /Users/yourmacusername/.ssh/known_hosts

4) CTRL-X เพื่อออกและเลือก Y เพื่อบันทึกการเปลี่ยนแปลง

ตอนนี้ให้พิมพ์ssh -p port servernameแล้วคุณจะได้รับพรอมต์ดั้งเดิมที่คุณทำเมื่อคุณลองใช้ SSH กับคอมพิวเตอร์เครื่องนั้นเป็นครั้งแรก จากนั้นคุณจะได้รับตัวเลือกให้บันทึกลายนิ้วมือ SHA256 ที่อัปเดตของคอมพิวเตอร์ระยะไกลนั้นลงในไฟล์ known_hosts ของคุณ หากคุณใช้ SSH บนพอร์ต 22 ดังนั้นอาร์กิวเมนต์ -p จึงไม่จำเป็น

ปัญหาใด ๆ ที่คุณสามารถกู้คืนไฟล์เดิม known_hosts: cp /Users/yourmacusername/.ssh/known_hosts.bak /Users/yourmacusername/.ssh/known_hosts


3
ควรทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับได้ การทำตามขั้นตอนเหล่านั้นแก้ไขปัญหาของฉันในขณะที่ssh-keygen -R [IP_ADDRESS]ไม่ได้ผลสำหรับฉัน ขอบคุณ!
Yusuf Kamil AK

ใช่หนึ่งในกรณีเหล่านั้นที่ไม่ยุติธรรมคำตอบที่ดีที่สุดแน่นอน คำตอบที่ 2 และ 3 เพียงทำซ้ำสิ่งที่ 1 กล่าวและพวกเขาทั้งหมดมีทางออกที่ไม่สมบูรณ์
brasofilo

16

ตามที่หลายคนได้กล่าวแล้วใช้ssh-keygenคือ

ssh-keygen -R pong

นอกจากนี้คุณอาจต้องการปิดการตรวจสอบคีย์โฮสต์ชั่วคราว:

ssh -oStrictHostKeyChecking=no root@pong

สิ่งที่ฉันใช้สำหรับ. ssh / config : Host ???? CheckHostIP no StrictHostKeyChecking no(3 บรรทัดจัดเรียงเริ่มจากวันที่ 2)
XXL

15

ใช้งานได้สำหรับฉัน!

ข้อผิดพลาด: การปิดคีย์ RSA ใน / var / lib / sss / pubconf / known_hosts: 4

สิ่งนี้บ่งชี้ว่าคุณมีคีย์ RSA ที่มีการละเมิดที่หมายเลขบรรทัด 4

โซลูชันที่ 1 :

1 vi /var/lib/sss/pubconf/known_hosts

2 remove line no: 4 .

3 Save and Exit, and Retry .

โซลูชันที่ 2:

ssh-keygen -R "you server hostname or ip"

หรือ

โซลูชันที่ 3:

sed -i '4d' /root/.ssh/known_hosts

การดำเนินการนี้จะลบ4thบรรทัดของ/root/.ssh/known_hostsตำแหน่ง ( -i)


1
สิ่งนี้ใช้ได้กับไฟล์. ssh known_hosts ของรูท ไม่ใช่สำหรับ / var / lib / sss / pubconf / known_hosts ซึ่งเป็นไฟล์ที่มีการจัดการโดย SSSD และบรรจุโดยเซิร์ฟเวอร์ระยะไกล
Mercury00

1
ในกรณีของฉันด้วยเหตุผลบางอย่างปัญหาเกิดขึ้นกับ known_hosts * 2 * การทำตามขั้นตอนเหล่านี้ช่วยให้ฉันค้นพบสิ่งนั้นขอบคุณ @Sahil Gulati!
ลูคัส

11

ฉันใช้วิธีแก้ปัญหาของ mockinterface แม้ว่า sed -i ไม่ได้ผลฉันแก้ไขมันได้ด้วยการลบบรรทัดด้วยมือด้วย vim:

sudo vim /var/lib/sss/pubconf/known_hosts

คุณสามารถใช้โปรแกรมแก้ไขข้อความอื่น ๆ ที่คุณต้องการ แต่บางทีคุณอาจต้องแสดงสิทธิ์ผู้ดูแลระบบของคุณ


1
ใช่ลบระเบียน IP เดียวกันในไฟล์ known_hosts เพื่อแก้ไขปัญหา
wherby

รายการจะถูกสร้างขึ้นใหม่โดย SSSD เมื่อพยายาม ssh อีกครั้ง โปรดทราบว่า sss pubconf known_hosts เป็นไฟล์ที่มีการจัดการไม่ใช่ที่เก็บข้อมูลในตัวเครื่องบางตัวซึ่งมีเซิร์ฟเวอร์ภายในเครื่อง
Mercury00

9

สำหรับผู้ใช้ Mac คุณสามารถใช้การ-Rตั้งค่าสถานะของssh-keygenคำสั่ง ตัวอย่างด่วน:

ssh-keygen -R THE_IP_ADDRESS

THE_IP_ADDRESSเป็น IP ที่คุณกำลังพยายามที่จะ ssh จากนั้นคุณสามารถเชื่อมต่อได้ดี


8

นี่เป็นเพราะการตั้งค่าคอมพิวเตอร์ระยะไกลของคุณเปลี่ยนไป ลบคีย์ปัจจุบันของคุณสำหรับสิ่งนั้น

vim /root/.ssh/known_hosts

ลบบรรทัดของ IP ที่คุณกำลังเชื่อมต่อ


7

แก้ไข /home/hostname /.ssh/known_hostsและลบ 4 บรรทัดและบันทึก

แล้วเรียกใช้ssh root@pongอีกครั้งคุณจะเห็นข้อความเช่นนี้เพียงแค่พิมพ์Are you sure you want to continue connecting (yes/no)? yesyes

หมายเหตุ: หากคุณมีปัญหาให้อ่านคำแนะนำก่อนมันจะช่วย


คำตอบที่ดีที่สุดที่อธิบายถึงสิ่งที่เกิดขึ้นจริง
โพร

6

คำตอบอื่น ๆ ~/.ssh/known_hostsที่นี่เป็นสิ่งที่ดีและการทำงานต่อไปฉันจะแก้ไขปัญหาโดยการลบ นี่เป็นการแก้ปัญหาอย่างแน่นอน แต่อาจไม่ใช่วิธีที่ดีที่สุด


6

ในกรณีของฉันมันเกิดขึ้นเพราะก่อนหน้านี้ฉันมีการเชื่อมต่อ ssh กับเครื่องที่มี ip เดียวกัน (พูด 192.152.51.10) และระบบกำลังพิจารณาคีย์ RSA (เก็บไว้ใน /home/user_name/.ssh/known_hosts) ของโฮสต์ก่อนหน้า ไม่ตรงกัน

หากต้องการแก้ไขปัญหานี้คุณจะต้องลบคีย์ RSA เก็บไว้ก่อนหน้านี้สำหรับ IP 192.152.51.10

ssh-keygen -f "/home/user_name/.ssh/known_hosts" -R 192.152.51.10

5

วิธีแก้ปัญหาหนึ่งซับง่ายทดสอบบน mac:

sed '/212.156.48.110/d' ~/.ssh/known_hosts > ~/.ssh/known_hosts

ลบIP โฮสต์ ssh เป้าหมายเท่านั้นจากโฮสต์ที่รู้จัก

โดยที่ 212.156.48.110 จะถูกแทนที่ด้วยที่อยู่ IP ของโฮสต์เป้าหมาย

สาเหตุ : เกิดขึ้นเนื่องจาก IP เป้าหมายเป็นที่รู้จักกันแล้วสำหรับเครื่องอื่นเนื่องจากการส่งต่อพอร์ต การลบ IP เป้าหมายก่อนเชื่อมต่อจะแก้ไขปัญหาได้


4

ใช้คำสั่งนี้:

truncate -s 0 /home/SYSTEM_NAME/.ssh/known_hosts

กรุณาเพิ่มคำอธิบายสิ่งที่คำสั่งทำและสิ่งที่มันไม่
Daniel W.

6
เหตุใดคุณต้องการตัดทอนไฟล์ คุณสูญเสียข้อมูลทั้งหมดแม้แต่ข้อมูลที่คุณยืนยันแล้ว นี่เป็นวิธีที่ไม่ดีในการต่อต้านคีย์สาธารณะที่มีการเปลี่ยนแปลงครั้งเดียว
แดเนียลดับเบิลยู.

1
นี่เป็นแฮ็คทั้งหมด: D แต่ใช้งานได้: D
Benjamin

คำแนะนำ: สิ่งนี้จะลบข้อมูลโฮสต์อื่นทั้งหมด หากคุณใช้งานสคริปต์อัตโนมัติจากเครื่องของคุณ (เช่นการปรับใช้) อาจแตกเพราะคุณต้องยืนยันโฮสต์คีย์ทั้งหมดด้วยตนเอง เพียงแค่ให้คำเตือนแก่ผู้ใช้คนอื่น ๆ ที่นี่ซึ่งมีความกระตือรือร้นที่จะใช้โซลูชันที่ง่ายที่สุด
Mateng

3

ลบรายการนั้นจาก known_hosts โดยใช้:

ssh-keygen -R *ip_address_or_hostname*

วิธีนี้จะลบ IP ที่มีปัญหาหรือชื่อโฮสต์ออกจากknown_hostsไฟล์แล้วลองเชื่อมต่ออีกครั้ง

จากหน้าคน:

-R hostname
ลบคีย์ทั้งหมดที่เป็นของชื่อโฮสต์ออกจากไฟล์ known_hosts ตัวเลือกนี้มีประโยชน์ในการลบโฮสต์ที่ถูกแฮช (ดูตัวเลือก -H ด้านบน)


3

แค่ทำ:

cd /home/user/.ssh/-> ที่นี่userจะเป็นชื่อผู้ใช้ของคุณเช่น/home/jon/ตัวอย่างเช่น

แล้วก็

gedit known_hosts & และลบเนื้อหาที่อยู่ภายใน

ตอนนี้sshอีกครั้งมันควรจะทำงาน


3

หากคุณกำลังพยายามเชื่อมต่อกับการเรียกใช้คอนเทนเนอร์นักเทียบท่าบนพอร์ต 2222 ด้วยคำสั่งและคุณได้รับข้อผิดพลาด

mian@tdowrick2~$ ssh pos@localhost -p 2222

จากนั้นเพื่อแก้ปัญหานี้ในคอมพิวเตอร์ของคุณ (เช่นเครื่องโฮสต์ไม่ได้บรรจุ) ไปที่cd ~/.ssh/และเปิดknown_hostsไฟล์ด้วยโปรแกรมแก้ไขข้อความ ลบบรรทัดที่ขึ้นต้นด้วย[localhost]:2222และบันทึกไฟล์ ตอนนี้ลอง ssh อีกครั้ง

mian@tdowrick2~$ ssh pos@localhost -p 2222

ข้อผิดพลาดจะหายไป แต่คุณต้องทำทุกครั้งที่รีสตาร์ทคอนเทนเนอร์



2

ปัญหาฝั่งไคลเอ็นต์เท่านั้น (คีย์ซ้ำสำหรับ ip):

แก้สายพันธุ์:

สำหรับ clear one ip (พอร์ตดีฟอลต์ 22):

ssh-keygen -f -R 7.7.7.7

สำหรับหนึ่ง ip ( ไม่ใช่พอร์ตดีฟอลต์ ):

ssh-keygen -f -R 7.7.7.7:333

ล้าง ips ทั้งหมดอย่างรวดเร็ว:

cd ~; rm .ssh/known_hosts

7.7.7.7 - เซิร์ฟเวอร์ของคุณเชื่อมต่อ ip

333 - ไม่ใช่พอร์ตมาตรฐาน


2

บางครั้งถ้าด้วยเหตุผลใดก็ตามคุณจำเป็นต้องติดตั้งเซิร์ฟเวอร์อีกครั้งเมื่อเชื่อมต่อโดย ssh เราจะพบว่าเซิร์ฟเวอร์ของคุณบอกว่าการระบุมีการเปลี่ยนแปลง หากเรารู้ว่าไม่ใช่การโจมตีแต่เราได้ทำการกู้คืนระบบแล้วเราสามารถลบการระบุตัวเก่าออกจาก known_hosts โดยใช้ ssh-keygen:

ssh-keygen -R <host/ip:hostname>
root/.ssh/known_hosts updated.
Original contents retained as /root/.ssh/known_hosts.old

เมื่อเชื่อมต่ออีกครั้งเราจะขอให้คุณตรวจสอบลายนิ้วมือใหม่:

ssh -l user <host/ip:hostname>
The authenticity of host '<host/ip:hostname>' can't 
be established.
RSA key fingerprint is 3f:3d:a0:bb:59:24:35:6d:e5:a0:1a:3f:9c:86:81:90.
Are you sure you want to continue connecting (yes/no)? yes

1

ฉันมีปัญหานี้และเหตุผลนั้นง่ายมากฉันมีที่อยู่ IP ซ้ำเพื่อเข้าสู่ระบบ SSH ดังนั้นหลังจากแก้ไขปัญหานี้ทุกอย่างจะได้รับการแก้ไข


1

ฉันมีข้อผิดพลาดเดียวกันในเครื่องของฉันและฉันล้างknown_hostsไฟล์และหลังจากนั้นก็ใช้งานได้ดี


1
คุณไม่ต้องการลบของคุณauthorized_keysเมื่อคุณมีปัญหากับknown_hostsไฟล์
jeb

0

สารละลาย:

1- ลบออกจาก "$ HOME / .ssh / known_hosts" บรรทัดที่อ้างถึงโฮสต์ซึ่งไม่สามารถเชื่อมต่อได้

2- ดำเนินการคำสั่งนี้: ssh-keygen -R "IP_ADDRESSorHOSTNAME" (แทนที่ "IP_ADDRESSorHOSTNAME" ด้วย IP ปลายทางหรือชื่อโฮสต์ปลายทางของคุณ)

3- ลองเชื่อมต่อ ssh อีกครั้ง (ถ้ามันล้มเหลวโปรดตรวจสอบการอนุญาตในไดเรกทอรี. ssh มันต้องเป็น 700)


0

โซลูชันของฉันใน UBUNTU (linux):

1. คุณต้องลบเนื้อหาจากไฟล์ "known_hosts" ซึ่งอยู่ใน "/home/YOUR_USERNAME/.ssh/known_hosts"

2. สร้างคีย์ ssh ใหม่เช่น "ssh-keygen -t rsa -C" your.email@example.com "-b 4096"

3. คัดลอกวางคีย์ ssh ใหม่ของคุณในที่เก็บ git (gitlab ในกรณีของฉัน) คีย์ SSH

มันใช้งานได้สำหรับฉัน!


-1

AWS EC2

ค้นหา IP ในข้อความที่ให้คุณ

วิ่ง

vim /home/ec2-user/.ssh/known_hosts

ใช้ปุ่มลูกศรเพื่อค้นหา ip จากข้อความและคลิก

dd

นี่จะลบบรรทัดนั้นจากนั้นเรียกใช้ Escape

:wp

สิ่งนี้จะช่วยให้คุณประหยัดได้

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