SSH เป็นโปรโตคอลยอดนิยมและมีประสิทธิภาพซึ่งช่วยให้คุณเข้าสู่ระบบและจัดการโฮสต์ระยะไกลจากเครื่องในพื้นที่ของคุณได้ คู่มือนี้จะแนะนำคำสั่งต่างๆ ที่คุณสามารถใช้ตรวจสอบการเชื่อมต่อ SSH ที่ใช้งานอยู่บนโฮสต์ระยะไกลได้
หมายเหตุ: ขึ้นอยู่กับการกำหนดค่าระบบ คำสั่งบางคำสั่งที่เราจะพูดถึงอาจทำให้คุณต้องมีรูทหรือ sudo
สิทธิพิเศษ
1. การใช้คำสั่งของ WHO
คำสั่งแรกที่คุณสามารถใช้เพื่อแสดงการเชื่อมต่อ SSH ที่ใช้งานอยู่คือ who
คำสั่ง
who
คำสั่งที่ใช้แสดงว่าใครเข้าระบบอยู่ ช่วยให้เราดูผู้ใช้ที่เชื่อมต่อและที่อยู่ IP ต้นทางได้
ในการใช้ who
คำสั่งเพียงป้อน who
โดยไม่มีพารามิเตอร์ใดๆ
ในผลลัพธ์ข้างต้น คุณจะเห็นผู้ใช้เดเบียนหนึ่งรายเชื่อมต่อผ่าน tty และเซสชัน SSH สองเซสชันจากที่อยู่ IP ระยะไกล
คุณยังสามารถเพิ่มพารามิเตอร์ให้กับ who
คำสั่งแสดงข้อมูลโดยละเอียด
ตัวอย่างเช่น หากต้องการแสดงการบูตครั้งสุดท้ายสำหรับผู้ใช้ที่เชื่อมต่อ ให้เพิ่ม -b -u
ธง:
who -b -u
who
คำสั่งมีตัวเลือกเพิ่มเติมเพื่อรับผลลัพธ์ที่กำหนดเอง ดูหน้าคู่มือเพื่อเรียนรู้เพิ่มเติม
2. การใช้คำสั่ง W
คำสั่งถัดไปที่คุณสามารถใช้เพื่อแสดงสถานะของเซสชัน SSH ต่างๆ และผู้ใช้ที่เชื่อมต่อกับเซิร์ฟเวอร์คือ w
สั่งการ. ต่างจาก who
คำสั่ง w
คำสั่งให้ข้อมูลเพิ่มเติมเกี่ยวกับกระบวนการทำงานสำหรับผู้ใช้แต่ละราย
นอกจากนี้ w
คำสั่งจะให้ข้อมูลเกี่ยวกับการเชื่อมต่อ SSH ที่ไม่ได้ใช้งาน ซึ่งจะมีประโยชน์มากเมื่อคุณต้องการยุติการเชื่อมต่อ
หากคุณเรียกใช้คำสั่งโดยไม่มีตัวเลือกอื่น คุณควรได้ผลลัพธ์ที่คล้ายกับที่แสดงด้านล่าง
ในตัวอย่างข้างต้น w
คำสั่งให้ข้อมูลโดยละเอียด เช่น ชื่อผู้ใช้ วิธี TTY ที่อยู่ IP ต้นทาง เวลาที่เข้าสู่ระบบ เวลาว่าง และอื่นๆ
เช่นเดียวกับ who
คำสั่ง คุณยังสามารถใช้ w
คำสั่งพร้อมพารามิเตอร์ต่างๆ ตารางด้านล่างแสดงพารามิเตอร์ต่างๆ ที่คุณสามารถใช้กับ w
คำสั่ง
พารามิเตอร์ | ทำหน้าที่อะไร |
---|---|
-h, –no-header | แจ้งเทอร์มินัลไม่ให้พิมพ์ส่วนหัว |
-u, –ไม่มีกระแส | แจ้งเทอร์มินัลให้ละเว้นชื่อผู้ใช้ในขณะที่แสดงกระบวนการของผู้ใช้ที่เชื่อมต่อและเวลา CPU |
-s, –สั้น | บอกให้เทอร์มินัลพิมพ์เอาต์พุตที่สั้นลง – ไม่รวมเวลาล็อกอิน, JCPU และ PCPU |
-f, –จาก | เปิด/ปิดตัวเลือก FROM ของเอาต์พุตการพิมพ์ |
–help | แสดงตัวเลือก/พารามิเตอร์และออกจากคำสั่ง w ต่างๆ |
-v, –version | แสดงข้อมูลเกี่ยวกับเวอร์ชันและการออก |
ผู้ใช้ | จำกัดผลลัพธ์ให้แคบลงเฉพาะผู้ใช้ที่ระบุ |
ตัวอย่างด้านล่างแสดง w
คำสั่งที่ใช้กับ -s
และ -f
พารามิเตอร์เพื่อแสดงเอาต์พุตแบบย่อของเซสชัน SSH ปัจจุบันโดยที่ส่วน FROM ถูกตัดออก
แม้ว่าจะไม่ค่อยได้ใช้ คุณยังสามารถใช้ w
คำสั่งด้วยพารามิเตอร์ด้านสิ่งแวดล้อมและไฟล์ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับพารามิเตอร์เหล่านี้ ให้พิจารณา man page
3. การใช้คำสั่งสุดท้าย
คุณยังสามารถใช้ last
คำสั่งแสดงเซสชัน SSH ที่เชื่อมต่อทั้งหมด คำสั่งสุดท้ายแสดงรายการผู้ใช้ที่เข้าสู่ระบบล่าสุด
ทำงานโดยการตรวจสอบไฟล์ที่กำหนด ตัวอย่างเช่น “/var/log/wtmp” แสดงผู้ใช้ทั้งหมดที่เข้าสู่ระบบและออกจากระบบตั้งแต่สร้างไฟล์ คำสั่งนี้ยังให้ข้อมูลเกี่ยวกับเซสชัน SSH ที่สร้างขึ้นระหว่างไคลเอนต์และเซิร์ฟเวอร์อีกด้วย
ไวยากรณ์ทั่วไปสำหรับคำสั่งสุดท้ายคือ:
last
นี่คือตัวอย่าง
เนื่องจากผลลัพธ์จากคำสั่งสุดท้ายมีขนาดใหญ่ เราจึงสามารถใช้ grep
คำสั่งให้แสดงเฉพาะเซสชันที่ใช้งานอยู่เท่านั้น
ตัวอย่างเช่น:
last | grep still
คุณยังสามารถแก้ไขผลลัพธ์จากคำสั่งสุดท้ายเพื่อแสดงข้อมูลโดยละเอียดได้
ตัวอย่างเช่น เพื่อแสดงชื่อผู้ใช้และโดเมนแบบเต็ม เราสามารถใช้ -w
ธง.
last -w
คำสั่งสุดท้ายรองรับตัวเลือกมากมาย ต่อไปนี้คือตัวเลือกที่ใช้บ่อยที่สุดสำหรับคำสั่งสุดท้าย
พารามิเตอร์ | ทำหน้าที่อะไร |
---|---|
-a, –hostlast | แสดงชื่อโฮสต์ในคอลัมน์สุดท้าย |
-d, –dns | Linux เก็บชื่อโฮสต์และที่อยู่ IP ของโฮสต์ระยะไกลทั้งหมด พารามิเตอร์นี้เปลี่ยน IP เป็นชื่อโฮสต์ |
-file, –file | แจ้งคำสั่งสุดท้ายเพื่อใช้ไฟล์ที่กำหนดนอกเหนือจาก /var/log/wtmp |
-F, –fulltimes | ข้อความแจ้งให้พิมพ์วันที่และเวลาสำหรับการเข้าสู่ระบบและออกจากระบบทั้งหมด |
-i, –ip | คล้ายกับ –dns ยกเว้นแทนที่จะแสดงชื่อโฮสต์ของโฮสต์ มันจะแสดงหมายเลข IP |
4. การใช้คำสั่ง netstat
เราไม่สามารถลืมเกี่ยวกับ netstat
สั่งการ. Netstat ใช้เพื่อแสดงการเชื่อมต่อเครือข่าย อินเทอร์เฟซเครือข่าย ตารางเส้นทาง และอื่นๆ
คุณยังสามารถใช้คำสั่ง netstat เพื่อกรองเซสชัน SSH ที่สร้างหรือเชื่อมต่อบนเซิร์ฟเวอร์ Linux ของคุณ:
netstat | grep ssh
คำสั่งด้านบนแสดงเฉพาะการเชื่อมต่อ SSH ที่สร้างไว้
เพื่อแสดงการเชื่อมต่อทั้งหมดรวมถึงการฟังและการไม่ฟัง เราสามารถใช้ -a
ตั้งค่าสถานะเป็น:
nestat -a | grep ssh
5. การใช้คำสั่ง ss
หากคุณต้องการเรียนรู้ข้อมูลเพิ่มเติมเกี่ยวกับเซสชัน SSH ที่เชื่อมต่อ คุณสามารถใช้ ss
คำสั่งที่แสดงข้อมูล socket ทำให้คล้ายกับ netstat
.
ตัวอย่างเช่น เราสามารถ grep เอาต์พุตจาก ss
คำสั่งด้วย -a
ตัวเลือก (ทั้งหมด) เพื่อแสดงเซสชัน SSH ที่เชื่อมต่อทั้งหมด ไวยากรณ์สำหรับสิ่งนั้นคือ:
ss -a | grep ssh
เอาต์พุตด้านบนแสดงการเชื่อมต่อ SSH ทั้งหมดบนรีโมตโฮสต์ ซึ่งจะรวมถึง SSHD daemon
ในการกรองการเชื่อมต่อ SSH ที่สร้างขึ้น คุณสามารถไพพ์เอาต์พุตกลับไปที่ grep
ss -a | grep ssh | grep ESTAB
คำสั่งด้านบนจะส่งคืนเฉพาะการเชื่อมต่อ SSH ที่ใช้งานอยู่
ss
คำสั่งยังมีตัวเลือกอื่น ๆ อีกมากมายที่คุณสามารถใช้เพื่อเรียนรู้สิ่งต่าง ๆ เกี่ยวกับการเชื่อมต่อเซิร์ฟเวอร์ที่ใช้งานอยู่ ตัวอย่างเช่น คุณสามารถใช้ -e
ตั้งค่าสถานะเพื่อแสดงข้อมูลเพิ่มเติมเกี่ยวกับข้อมูลซ็อกเก็ต
บทสรุป
เป็นการดีที่จะคอยเฝ้าติดตามโฮสต์ระยะไกลของคุณสำหรับการเข้าสู่ระบบ SSH ที่ไม่ได้รับอนุญาตและดำเนินการที่จำเป็น เช่น การรักษาความปลอดภัยเซิร์ฟเวอร์ของคุณ หรือการปิดใช้งานการพิสูจน์ตัวตนด้วยรหัสผ่าน ในขณะเดียวกัน คุณยังสามารถใช้ช่องสัญญาณ SSH ย้อนกลับเพื่ออนุญาตการเชื่อมต่อภายนอกกับพีซีของคุณได้