วิธีการดีบักการเชื่อมต่อ SSH

How Debug Ssh Connections



บทช่วยสอนนี้จะอธิบายวิธีการและเทคนิคสั้นๆ ที่คุณสามารถใช้วินิจฉัยการเชื่อมต่อ SSH ต่างๆ ได้ รวมถึงเมื่อคุณไม่สามารถเชื่อมต่อกับ SSH ได้ ข้อผิดพลาดในการตรวจสอบสิทธิ์ และอื่นๆ

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







ปัญหา 1: บริการ SSH ไม่ทำงาน

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



ในการตรวจสอบว่าบริการ SSH กำลังทำงานอยู่หรือไม่ ให้ใช้ตัวจัดการระบบโดยใช้คำสั่ง:



sudoสถานะ systemctl sshd

คำสั่งดังกล่าวควรรายงานว่าบริการกำลังทำงานอยู่หรือไม่ดังที่แสดงในภาพหน้าจอด้านล่าง







สารละลาย

ในการแก้ไขปัญหา SSH ที่เกิดจากบริการไม่ทำงาน ให้ใช้ระบบเพื่อเริ่มบริการ หากบริการตอบสนองโดยมีข้อผิดพลาด ให้ตรวจสอบบันทึกและแก้ไขปัญหาที่รายงานในบันทึก

ใช้คำสั่งด้านล่างเพื่อตรวจสอบบันทึกการบริการ

กริป 'sshd' /ที่ไหน/บันทึก/auth.log

ใช้คำสั่งด้านล่างเพื่อเริ่มหรือหยุดบริการ SSH โดยใช้ systemd

sudosystemctl เริ่ม sshd

ปัญหา 2: SSH บนพอร์ตที่ไม่ได้มาตรฐาน

ปัญหาทั่วไปที่สองเมื่อทำการดีบักการเชื่อมต่อ SSH คือการใช้พอร์ตที่ไม่ได้มาตรฐาน หาก SSH ทำงานบนพอร์ตอื่นที่ไม่ใช่พอร์ตเริ่มต้น 22 คุณจะไม่เชื่อมต่อกับโฮสต์ระยะไกลเว้นแต่คุณจะระบุพอร์ตที่ SSH ทำงานอยู่อย่างชัดเจน

ในการดูพอร์ตที่ SSH ทำงานอยู่ ให้ใช้เครื่องมือเช่น netstat ดังต่อไปนี้:

[ร้อย@centos8 ~]$sudo netstat -ptln | กริป ssh
tcp0 00.0.0.0:560.0.0.0:*ฟัง1131/sshd
tcp60 0:::56:::*ฟัง1131/sshd

ผลลัพธ์ด้านบนแสดงพอร์ตที่บริการ SSH ทำงานอยู่ ในกรณีนี้คือพอร์ต 56

สารละลาย

ในการแก้ไขปัญหานี้ คุณสามารถใช้ข้อมูลจาก netstat เพื่อระบุพอร์ตในคำสั่ง ssh ของคุณอย่างชัดเจนเป็น:

sshชื่อผู้ใช้@ip -NS 56

ปัญหา 3: บริการอื่นที่ใช้พอร์ตเดียวกัน

สาเหตุของข้อผิดพลาดในการเชื่อมต่อ SSH อีกประการหนึ่งคือหากบริการหรือกระบวนการอื่นใช้พอร์ตเดียวกันกับบริการ SSH ตัวอย่างเช่น หากมีการระบุ SSH ไว้อย่างชัดเจนให้ทำงานบนพอร์ต 80 (แนวคิดแย่มาก) บริการอย่าง Apache อาจใช้พอร์ตเดียวกัน

หากต้องการดูว่ากระบวนการอื่นใช้พอร์ตเดียวกับ SSH หรือไม่ ให้ตรวจสอบบันทึกโดยใช้คำสั่ง:

sudoJournalctl-NSsshd

คำสั่งนี้ควรส่งคืนข้อผิดพลาดดังที่แสดงด้านล่าง ซึ่งบ่งชี้ว่ากระบวนการอื่นใช้พอร์ตที่ผูกกับ SSH หรือไม่

sshd[110611]: error: ผูกกับพอร์ต80เมื่อ 0.0.0.0 ล้มเหลว: ที่อยู่แล้วในใช้

เป็นการดีที่จะตรวจสอบให้แน่ใจว่าข้อผิดพลาดในการผูกพอร์ตเกิดจากบริการอื่น ไม่ใช่มาตรการรักษาความปลอดภัย เช่น SELinux

สารละลาย

มีหลายวิธีที่คุณสามารถใช้เพื่อแก้ไขปัญหานี้ ซึ่งรวมถึง:

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

sudo นาโน /ฯลฯ/ssh/sshd_config
ท่าเรือ3009

อีกวิธีหนึ่งที่คุณสามารถใช้เพื่อแก้ไขปัญหานี้ได้คือการหยุดบริการโดยใช้พอร์ต SSH ตัวอย่างเช่น หยุดบริการ apache โดยใช้พอร์ต 80 เป็น:

sudosystemctl หยุด httpd
sudosystemctl ปิดการใช้งาน httpd

ปัญหาที่ 4: ไฟร์วอลล์

หากคุณลองวิธีการทั้งหมดข้างต้นแล้วแต่ยังไม่มีการเชื่อมต่อ SSH คุณสามารถไปยังสาเหตุที่เป็นไปได้ถัดไปของปัญหา: การจำกัดไฟร์วอลล์ ขึ้นอยู่กับวิธีไฟร์วอลล์ที่คุณใช้ (UFW หรือ Iptables) คุณต้องแน่ใจว่าไฟร์วอลล์อนุญาตการเชื่อมต่อ SSH

สารละลาย

กฎไฟร์วอลล์มีขอบเขตกว้างและสามารถเปลี่ยนแปลงได้ขึ้นอยู่กับการกำหนดค่าระบบ ดังนั้นฉันจึงไม่สามารถครอบคลุมทุกด้านได้ อย่างไรก็ตาม ต่อไปนี้เป็นวิธีแก้ปัญหาง่ายๆ เพื่อให้แน่ใจว่าบริการ SSH ได้รับอนุญาตบน UFW Firewall

sudoufw อนุญาต<ssh_port> /tcp

คุณสามารถรีเซ็ตกฎ UFW ทั้งหมดและเริ่มต้นใหม่ได้ ที่จะช่วยให้คุณแก้ไขปัญหาการเชื่อมต่อไฟร์วอลล์ตั้งแต่เริ่มต้น

sudoufw รีเซ็ต

ฉบับที่ 5: การเข้าสู่ระบบด้วยรหัสผ่านที่ปิดใช้งาน

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

ในการตรวจสอบว่าอนุญาตให้เข้าสู่ระบบด้วยรหัสผ่านหรือไม่ ให้ cat ssh config เป็น:

[ร้อย@centos8]$sudo กริปการตรวจสอบรหัสผ่าน/ฯลฯ/ssh/sshd_config
#การตรวจสอบรหัสผ่านใช่
การตรวจสอบรหัสผ่านใช่
# การตรวจสอบรหัสผ่าน ขึ้นอยู่กับการกำหนดค่า PAM ของคุณ
# การตรวจสอบ PAM จากนั้นเปิดใช้งาน แต่ตั้งค่า PasswordAuthentication

ผลลัพธ์ข้างต้นแสดงว่าอนุญาตให้เข้าสู่ระบบด้วยรหัสผ่าน

สารละลาย

ในการแก้ไขปัญหาข้างต้น คุณสามารถใช้สองวิธี:

อันดับแรก หากคุณตั้งค่าเป็น no ให้เปลี่ยนค่า PasswordAuthentication เป็น yes แล้วเริ่มบริการ ssh ใหม่

อีกวิธีหนึ่งคือสร้างคู่คีย์-ค่า ssh และใช้เพื่อล็อกอินเข้าสู่เซิร์ฟเวอร์ หากต้องการเรียนรู้วิธีสร้างคู่คีย์-ค่า ssh ให้ใช้คำแนะนำต่อไปนี้

https://linuxhint.com/find-ssh-public-key/

https://linuxhint.com/use-ssh-copy-id-command/

บทสรุป

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