บันทึก: คำสั่งที่กล่าวถึงในที่นี้ได้รับการทดสอบบน Ubuntu 20.04 LTS แล้ว คำสั่งเดียวกันนี้ใช้ได้กับระบบเดเบียนเช่นกัน
แก้ไขข้อผิดพลาดการปฏิเสธการเชื่อมต่อ
นี่เป็นข้อผิดพลาดในการเชื่อมต่อที่คุณอาจพบขณะเชื่อมต่อกับระบบระยะไกลผ่าน SSH
ปฏิบัติตามแนวทางแก้ไขด้านล่างทีละขั้นตอนเพื่อแก้ไขข้อผิดพลาดการเชื่อมต่อถูกปฏิเสธ
ตรวจสอบให้แน่ใจว่าได้ติดตั้ง OpenSSH แล้ว
สาเหตุหนึ่งที่คุณอาจได้รับข้อผิดพลาดการเชื่อมต่อถูกปฏิเสธเป็นเพราะเซิร์ฟเวอร์ OpenSSH ไม่ได้ติดตั้งบนเซิร์ฟเวอร์เป้าหมาย
ขั้นแรก คุณจะต้องตรวจสอบให้แน่ใจว่าได้ติดตั้งเซิร์ฟเวอร์ OpenSSH บนระบบที่คุณพยายามเข้าถึงผ่าน SSH ในการตรวจสอบว่ามีการติดตั้ง OpenSSH หรือไม่ ให้ออกคำสั่งต่อไปนี้ใน Terminal ของเซิร์ฟเวอร์เป้าหมาย:
$sudoรายการ apt--ติดตั้งแล้ว | กริปopensh-เซิร์ฟเวอร์
คำสั่งนี้โดยทั่วไปจะกรองคำว่า openssh-server จากรายการแพ็คเกจที่ติดตั้ง หากคุณได้รับเอาต์พุตที่คล้ายกันต่อไปนี้ แสดงว่ามีการติดตั้งเซิร์ฟเวอร์ OpenSSH ในทางกลับกัน หากคุณไม่ได้รับเอาต์พุต แสดงว่า OpenSSH หายไปบนเซิร์ฟเวอร์เป้าหมาย
ในกรณีที่ไม่ได้ติดตั้งบนเซิร์ฟเวอร์เป้าหมาย คุณสามารถติดตั้งโดยใช้คำสั่งต่อไปนี้เป็น sudo:
$sudoฉลาดติดตั้งopensh-เซิร์ฟเวอร์จากนั้นพิมพ์รหัสผ่าน sudo และเมื่อระบบขอยืนยัน ให้กด 'y' เมื่อติดตั้งแล้ว ให้ยืนยันโดยใช้คำสั่งเดียวกัน
$sudoรายการ apt--ติดตั้งแล้ว | กริปopensh-เซิร์ฟเวอร์ตรวจสอบบริการ SSH
บริการ OpenSSH ทำงานในพื้นหลังและรับฟังการเชื่อมต่อที่เข้ามา บริการ OpenSSH ที่หยุดทำงานอาจเป็นสาเหตุหนึ่งที่ทำให้คุณได้รับข้อผิดพลาดการปฏิเสธการเชื่อมต่อ
ดังนั้นจึงจำเป็นต้องตรวจสอบว่าบริการ OpenSSH กำลังทำงานอยู่หรือไม่โดยใช้คำสั่งต่อไปนี้ใน Terminal:
$sudoบริการsshสถานะหากคุณเห็นผลลัพธ์ต่อไปนี้ แสดงว่าบริการกำลังทำงานและทำงานในพื้นหลัง
ในทางกลับกัน ถ้าคุณได้รับ ไม่ทำงาน (ตาย), นั่นหมายความว่าบริการไม่ทำงาน . คุณสามารถเรียกใช้บริการ OpenSSH โดยใช้คำสั่งต่อไปนี้เป็น sudo ใน Terminal:
$sudoบริการsshเริ่มในการเริ่มบริการใหม่ ให้ใช้คำสั่งต่อไปนี้:
$sudoบริการsshเริ่มต้นใหม่ตรวจสอบพอร์ตการรับฟังเซิร์ฟเวอร์ SSH
อีกสาเหตุหนึ่งที่ทำให้ได้รับข้อผิดพลาดการปฏิเสธการเชื่อมต่อคือเพราะคุณพยายามเชื่อมต่อกับพอร์ตที่ไม่ถูกต้อง ตัวอย่างเช่น หากเซิร์ฟเวอร์ได้รับการกำหนดค่าให้รับฟังบนพอร์ต 2244 และคุณกำลังพยายามเชื่อมต่อกับพอร์ตเริ่มต้น 22 ในกรณีนี้ คุณจะได้รับข้อผิดพลาดการเชื่อมต่อถูกปฏิเสธ
ก่อนลองเชื่อมต่อ คุณต้องตรวจสอบพอร์ตการรับฟังเซิร์ฟเวอร์ SSH หากเป็นพอร์ตเริ่มต้น (22) คุณสามารถเชื่อมต่อโดยใช้คำสั่งต่อไปนี้:
$ssh [ชื่อผู้ใช้]@[เซิร์ฟเวอร์ระยะไกล IP หรือชื่อโฮสต์]หากเป็นพอร์ตอื่นที่ไม่ใช่พอร์ตเริ่มต้น คุณจะต้องเชื่อมต่อกับเซิร์ฟเวอร์ SSH โดยใช้พอร์ตนี้:
$ssh -NS [หมายเลขพอร์ต] [ชื่อผู้ใช้]@[ที่อยู่ IP]เพื่อตรวจสอบว่าพอร์ตใดที่เซิร์ฟเวอร์ OpenSSH กำลังฟังอยู่ ใช้คำสั่งต่อไปนี้ใน Terminal:
$sudo netstat -ltnp | กริปsshdคุณจะได้รับผลลัพธ์ที่คล้ายกับต่อไปนี้:
ในคอลัมน์ที่สาม คุณจะเห็นพอร์ตการรับฟังของเซิร์ฟเวอร์คือ 2244 ในกรณีนี้ คุณจะต้องเชื่อมต่อกับเซิร์ฟเวอร์ SSH โดยใช้พอร์ตนี้
$ssh -NS [2244] [ชื่อผู้ใช้]@[ที่อยู่ IP]อนุญาต SSH ในไฟร์วอลล์
ไฟร์วอลล์ที่บล็อกพอร์ต SSH อาจเป็นอีกสาเหตุสำคัญที่ทำให้การเชื่อมต่อถูกปฏิเสธข้อผิดพลาด หากไฟร์วอลล์ทำงานบนเซิร์ฟเวอร์ SSH คุณจะต้องอนุญาตพอร์ต SSH โดยใช้คำสั่งต่อไปนี้ แทนที่ ท่า ตามหมายเลขพอร์ตที่เซิร์ฟเวอร์ SSH กำลังรับฟัง:
$sudoufw อนุญาตพอร์ต/tcpตัวอย่างเช่น หากเซิร์ฟเวอร์ SSH กำลังฟังพอร์ต 2244 คุณสามารถอนุญาตในไฟร์วอลล์ได้ดังนี้:
$sudoufw อนุญาต2244/tcp
โหลดไฟร์วอลล์ใหม่โดยใช้คำสั่งต่อไปนี้:
$sudoufw โหลดซ้ำเพื่อยืนยันว่ามีการเพิ่มกฎหรือไม่ ให้ตรวจสอบสถานะของไฟร์วอลล์โดยใช้คำสั่งต่อไปนี้ใน Terminal:
$sudoufw สถานะผลลัพธ์ต่อไปนี้แสดงว่าพอร์ต 2244 ได้รับอนุญาตในไฟร์วอลล์
แก้ไขข้อขัดแย้งที่อยู่ IP ที่ซ้ำกัน
ข้อผิดพลาดการเชื่อมต่อถูกปฏิเสธอาจเกิดขึ้นได้เนื่องจากความขัดแย้งของที่อยู่ IP ที่ซ้ำกัน ดังนั้น ตรวจสอบให้แน่ใจว่าระบบไม่มีที่อยู่ IP ที่ซ้ำกัน
ติดตั้งยูทิลิตี้ arping บนระบบของคุณโดยใช้คำสั่งต่อไปนี้:
$sudoฉลาดติดตั้งarpingจากนั้น ping ที่อยู่ IP ของเซิร์ฟเวอร์ SSH
$ปิง <ที่อยู่ IP>ในผลลัพธ์ หากคุณเห็นการตอบกลับจากที่อยู่ MAC มากกว่าหนึ่งรายการ แสดงว่ามี IP ที่ซ้ำกันทำงานอยู่บนระบบ ในกรณีนี้ ให้เปลี่ยนที่อยู่ IP ของเซิร์ฟเวอร์ SSH แล้วลองเชื่อมต่ออีกครั้งด้วยที่อยู่ IP ใหม่
นี่คือวิธีการแก้ไขข้อผิดพลาดการเชื่อมต่อถูกปฏิเสธโดยพอร์ต 22 ในระบบ Linux ในบทความนี้ เราได้อธิบายสองสามวิธีที่จะช่วยคุณในการแก้ไขข้อผิดพลาดการเชื่อมต่อที่ถูกปฏิเสธ