<ก่อนหน้านี้ | Contents | ถัดไป>
SSH
เพื่อแก้ไขปัญหานี้ โปรโตคอลใหม่ที่เรียกว่า SSH (Secure Shell) ได้รับการพัฒนา SSH แก้ปัญหาพื้นฐานสองประการของการสื่อสารที่ปลอดภัยกับโฮสต์ระยะไกล อย่างแรก มันตรวจสอบว่าโฮสต์ระยะไกลเป็นใคร (เพื่อป้องกันการโจมตีที่เรียกว่า "คนตรงกลาง") และอย่างที่สอง มันเข้ารหัสการสื่อสารทั้งหมดระหว่างโฮสต์ท้องถิ่นและโฮสต์ระยะไกล
SSH ประกอบด้วยสองส่วน เซิร์ฟเวอร์ SSH ทำงานบนรีโมตโฮสต์ รับฟังการเชื่อมต่อขาเข้าที่พอร์ต 22 ในขณะที่ไคลเอ็นต์ SSH ถูกใช้บนระบบโลคัลเพื่อสื่อสารกับเซิร์ฟเวอร์ระยะไกล
ลีนุกซ์รุ่นส่วนใหญ่จัดส่งการใช้งาน SSH ที่เรียกว่า OpenSSH จากโปรเจ็กต์ OpenBSD การแจกแจงบางอย่างมีทั้งไคลเอนต์และแพ็คเกจเซิร์ฟเวอร์โดยค่าเริ่มต้น (เช่น Red Hat) ในขณะที่บางตัว (เช่น Ubuntu) จะจัดหาเฉพาะไคลเอนต์เท่านั้น ถึง
เปิดใช้งานระบบเพื่อรับการเชื่อมต่อระยะไกล จะต้องมี OปากกาSSH-เซิร์ฟเวอร์ แพ็คเกจที่ติดตั้ง กำหนดค่าและใช้งาน และ (หากระบบทำงานอยู่หรืออยู่หลังไฟร์วอลล์) จะต้องอนุญาตการเชื่อมต่อเครือข่ายขาเข้าบนพอร์ต TCP 22
ปลาย: หากคุณไม่มีระบบระยะไกลที่จะเชื่อมต่อแต่ต้องการลองตัวอย่างเหล่านี้ ตรวจสอบให้แน่ใจว่า เซิร์ฟเวอร์ OpenSSH แพ็คเกจถูกติดตั้งบนระบบของคุณและใช้งาน localhost เป็นชื่อของโฮสต์ระยะไกล ด้วยวิธีนี้ เครื่องของคุณจะสร้างการเชื่อมต่อเครือข่ายด้วยตัวมันเอง
มีการเรียกโปรแกรมไคลเอ็นต์ SSH ที่ใช้เชื่อมต่อกับเซิร์ฟเวอร์ SSH ระยะไกลอย่างเหมาะสม SSH. ในการเชื่อมต่อกับรีโมตโฮสต์ที่ชื่อ ระยะไกลsys, เราจะใช้ SSH โปรแกรมไคลเอนต์เช่นนี้:
[me@linuxbox ~]$ ssh รีโมท sys
ไม่สามารถสร้างความถูกต้องของโฮสต์ 'remote-sys (192.168.1.4)'
RSA key fingerprint is 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
แน่ใจไหมว่าต้องการเชื่อมต่อ (ใช่ / ไม่ใช่)
[me@linuxbox ~]$ ssh รีโมท sys
ไม่สามารถสร้างความถูกต้องของโฮสต์ 'remote-sys (192.168.1.4)'
RSA key fingerprint is 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb.
แน่ใจไหมว่าต้องการเชื่อมต่อ (ใช่ / ไม่ใช่)
ในครั้งแรกที่พยายามเชื่อมต่อ จะมีข้อความปรากฏขึ้นเพื่อระบุว่าไม่สามารถสร้างความถูกต้องของโฮสต์ระยะไกลได้ เนื่องจากโปรแกรมไคลเอนต์ไม่เคยเห็นรีโมตโฮสต์นี้มาก่อน ในการยอมรับข้อมูลประจำตัวของรีโมตโฮสต์ ให้ป้อน "ใช่" เมื่อได้รับแจ้ง เมื่อสร้างการเชื่อมต่อแล้ว ผู้ใช้จะได้รับแจ้งรหัสผ่านของเขา/เธอ:
คำเตือน: เพิ่ม 'remote-sys,192.168.1.4' (RSA) อย่างถาวรในรายการโฮสต์ที่รู้จัก
รหัสผ่านของ me@remote-sys:
คำเตือน: เพิ่ม 'remote-sys,192.168.1.4' (RSA) อย่างถาวรในรายการโฮสต์ที่รู้จัก
รหัสผ่านของ me@remote-sys:
หลังจากป้อนรหัสผ่านสำเร็จ เราได้รับพร้อมต์เชลล์จากระบบรีโมต:
เข้าสู่ระบบครั้งล่าสุด: ส. 30 ส.ค. 13:00:48 2016 [me@remote-sys ~]$
เข้าสู่ระบบครั้งล่าสุด: ส. 30 ส.ค. 13:00:48 2016 [me@remote-sys ~]$
เซสชันเชลล์ระยะไกลจะดำเนินต่อไปจนกว่าผู้ใช้จะเข้าสู่ ทางออก คำสั่งที่พรอมต์รีโมตเชลล์จึงปิดการเชื่อมต่อระยะไกล ณ จุดนี้ เซสชันเชลล์ท้องถิ่น
ดำเนินการต่อและพร้อมท์เชลล์ในเครื่องปรากฏขึ้นอีกครั้ง
นอกจากนี้ยังสามารถเชื่อมต่อกับระบบระยะไกลโดยใช้ชื่อผู้ใช้อื่นได้ ตัวอย่างเช่น หากผู้ใช้ในเครื่อง “ฉัน” มีบัญชีชื่อ “บ๊อบ” บนระบบระยะไกล user me สามารถเข้าสู่ระบบบัญชี เมล็ดข้าว บนระบบระยะไกลดังนี้:
[me@linuxbox ~]$ ssh bob@remote-sys
รหัสผ่านของ bob@remote-sys:
เข้าสู่ระบบครั้งล่าสุด: ส. 30 ส.ค. 13:03:21 2016 [bob@remote-sys ~]$
[me@linuxbox ~]$ ssh bob@remote-sys
รหัสผ่านของ bob@remote-sys:
เข้าสู่ระบบครั้งล่าสุด: ส. 30 ส.ค. 13:03:21 2016 [bob@remote-sys ~]$
ตามที่ระบุไว้ก่อนหน้านี้ SSH ตรวจสอบความถูกต้องของโฮสต์ระยะไกล หากรีโมตโฮสต์ไม่สามารถพิสูจน์ตัวตนได้สำเร็จ ข้อความต่อไปนี้จะปรากฏขึ้น:
[me@linuxbox ~]$ ssh รีโมท sys
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) @@@@@@@@@@
@ คำเตือน: การระบุโฮสต์ระยะไกลมีการเปลี่ยนแปลง! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) @@@@@@@@@@@@@@@@@@@@@@@@@@@
ตอนนี้อาจมีคนแอบฟังคุณอยู่ (การโจมตีแบบคนกลาง)!
อาจเป็นไปได้ว่าเพิ่งเปลี่ยนคีย์โฮสต์ RSA ลายนิ้วมือสำหรับคีย์ RSA ที่ส่งโดยโฮสต์ระยะไกลคือ 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb
โปรดติดต่อผู้ดูแลระบบของคุณ
เพิ่มโฮสต์คีย์ที่ถูกต้องใน /home/me/.ssh/known_hosts เพื่อกำจัดข้อความนี้
รหัสที่ละเมิดใน /home/me/.ssh/known_hosts:1
คีย์โฮสต์ RSA สำหรับระบบระยะไกลมีการเปลี่ยนแปลง และคุณได้ร้องขอการตรวจสอบอย่างเข้มงวด
การยืนยันคีย์โฮสต์ล้มเหลว
[me@linuxbox ~]$ ssh รีโมท sys
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) @@@@@@@@@@
@ คำเตือน: การระบุโฮสต์ระยะไกลมีการเปลี่ยนแปลง! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@) @@@@@@@@@@@@@@@@@@@@@@@@@@@
ตอนนี้อาจมีคนแอบฟังคุณอยู่ (การโจมตีแบบคนกลาง)!
อาจเป็นไปได้ว่าเพิ่งเปลี่ยนคีย์โฮสต์ RSA ลายนิ้วมือสำหรับคีย์ RSA ที่ส่งโดยโฮสต์ระยะไกลคือ 41:ed:7a:df:23:19:bf:3c:a5:17:bc:61:b3:7f:d9:bb
โปรดติดต่อผู้ดูแลระบบของคุณ
เพิ่มโฮสต์คีย์ที่ถูกต้องใน /home/me/.ssh/known_hosts เพื่อกำจัดข้อความนี้
รหัสที่ละเมิดใน /home/me/.ssh/known_hosts:1
คีย์โฮสต์ RSA สำหรับระบบระยะไกลมีการเปลี่ยนแปลง และคุณได้ร้องขอการตรวจสอบอย่างเข้มงวด
การยืนยันคีย์โฮสต์ล้มเหลว
ข้อความนี้เกิดจากหนึ่งในสองสถานการณ์ที่เป็นไปได้ ประการแรก ผู้โจมตีอาจพยายามโจมตีแบบ "คนกลาง" หายากเพราะทุกคนรู้ดี SSH แจ้งเตือนผู้ใช้ถึงสิ่งนี้ ผู้ร้ายที่มีแนวโน้มมากขึ้นคือระบบระยะไกลมีการเปลี่ยนแปลงอย่างใด ตัวอย่างเช่น ระบบปฏิบัติการหรือเซิร์ฟเวอร์ SSH ได้รับการติดตั้งใหม่ อย่างไรก็ตาม ในแง่ของความปลอดภัยและความปลอดภัย ไม่ควรมองข้ามความเป็นไปได้แรกไป ตรวจสอบกับผู้ดูแลระบบของระบบระยะไกลเสมอเมื่อมีข้อความนี้เกิดขึ้น
หลังจากที่ได้รับการพิจารณาแล้วว่าข้อความนั้นเกิดจากสาเหตุที่ไม่ร้ายแรง จะสามารถแก้ไขปัญหาในฝั่งไคลเอ็นต์ได้อย่างปลอดภัย ทำได้โดยใช้โปรแกรมแก้ไขข้อความ (เป็นกลุ่ม บางที) เพื่อ- ย้ายกุญแจที่ล้าสมัยออกจาก ~/.ssh/known_hosts ไฟล์. ในข้อความตัวอย่างด้านบน เราจะเห็นสิ่งนี้:
รหัสที่ละเมิดใน /home/me/.ssh/known_hosts:1
รหัสที่ละเมิดใน /home/me/.ssh/known_hosts:1
ซึ่งหมายความว่าบรรทัดหนึ่งของ รู้จัก_hosts ไฟล์มีคีย์ที่ละเมิด ลบบรรทัดนี้ออกจากไฟล์และ SSH โปรแกรมจะสามารถรับการรับรองการพิสูจน์ตัวตนใหม่จากระบบระยะไกลได้
นอกจากการเปิดเชลล์เซสชั่นบนระบบรีโมตแล้ว SSH ยังช่วยให้เราสามารถดำเนินการคำสั่งเดียวบนระบบระยะไกล ตัวอย่างเช่น ในการดำเนินการ ฟรี คำสั่งบนรีโมตโฮสต์ชื่อ ระยะไกลsys และให้ผลลัพธ์แสดงบนระบบโลคัล:
[me@linuxbox ~]$ ssh รีโมท sys ฟรี
รหัสผ่านของ me@twin4:
ใช้งานฟรีทั้งหมด
ที่ใช้ร่วมกัน
บัฟเฟอร์
เก็บไว้ชั่วคราว
[me@linuxbox ~]$ ssh รีโมท sys ฟรี
รหัสผ่านของ me@twin4:
ใช้งานฟรีทั้งหมด
บันทึก:
775536 507184 268352
0
110068
154596
บันทึก:
-/+ บัฟเฟอร์/แคช:
Swap:
242520 533016
0 1572856
-/+ บัฟเฟอร์/แคช:
Swap:
[me@linuxbox ~]$
[me@linuxbox ~]$
1572856
1572856
เป็นไปได้ที่จะใช้เทคนิคนี้ในรูปแบบที่น่าสนใจมากขึ้น เช่น ตัวอย่างนี้ที่เราดำเนินการ ls บนระบบระยะไกลและเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์บนระบบโลคัล:
[me@linuxbox ~]$ ssh remote-sys 'ls *' > dirlist.txt
รหัสผ่านของ me@twin4: [me@linuxbox ~]$
[me@linuxbox ~]$ ssh remote-sys 'ls *' > dirlist.txt
รหัสผ่านของ me@twin4: [me@linuxbox ~]$
สังเกตการใช้เครื่องหมายคำพูดเดี่ยวในคำสั่งด้านบน สิ่งนี้ทำได้เพราะเราไม่ต้องการให้ขยายชื่อพาธบนเครื่องโลคัล แต่เราต้องการให้ดำเนินการบนระบบระยะไกล ในทำนองเดียวกัน หากเราต้องการให้ผลลัพธ์ถูกเปลี่ยนเส้นทางไปยังไฟล์บนเครื่องระยะไกล เราอาจวางโอเปอเรเตอร์การเปลี่ยนเส้นทางและชื่อไฟล์ไว้ในเครื่องหมายคำพูดเดี่ยว:
[me@linuxbox ~]$ ssh remote-sys 'ls * > dirlist.txt'
[me@linuxbox ~]$ ssh remote-sys 'ls * > dirlist.txt'
การขุดอุโมงค์ด้วย SSH
ส่วนหนึ่งของสิ่งที่เกิดขึ้นเมื่อคุณสร้างการเชื่อมต่อกับรีโมตโฮสต์ผ่าน SSH คือ an อุโมงค์เข้ารหัส ถูกสร้างขึ้นระหว่างระบบโลคัลและระบบรีโมต ปกติแล้ว อุโมงค์นี้ใช้เพื่ออนุญาตให้ส่งคำสั่งที่พิมพ์ที่ระบบภายในเครื่องได้อย่างปลอดภัยไปยังระบบระยะไกล และสำหรับผลลัพธ์จะถูกส่งกลับอย่างปลอดภัย นอกเหนือจากฟังก์ชันพื้นฐานนี้แล้ว โปรโตคอล SSH ยังอนุญาตให้ส่งทราฟฟิกเครือข่ายส่วนใหญ่ผ่านช่องสัญญาณที่เข้ารหัส ทำให้เกิดการเรียงลำดับของ VPN (Virtual Private Network) ระหว่างระบบภายในและระยะไกล
บางทีการใช้คุณลักษณะนี้โดยทั่วไปคือการอนุญาตให้ส่งการรับส่งข้อมูลของระบบ X Window บนระบบที่รันเซิร์ฟเวอร์ X (นั่นคือ เครื่องที่แสดง GUI) เป็นไปได้ที่จะเปิดและรันโปรแกรมไคลเอนต์ X (แอพพลิเคชั่นแบบกราฟิก) บนระบบระยะไกลและให้การแสดงผลปรากฏบนระบบโลคัล ง่ายที่จะทำ นี่คือตัวอย่าง: สมมติว่าเรากำลังนั่งอยู่ที่ระบบ Linux ที่เรียกว่า lin-uxbox ซึ่งใช้เซิร์ฟเวอร์ X และเราต้องการเรียกใช้ เอ็กซ์โหลด โปรแกรมบนระบบระยะไกลที่ชื่อว่า ระยะไกลsys และดูผลลัพธ์แบบกราฟิกของโปรแกรมบนระบบในพื้นที่ของเรา เราสามารถทำได้:
[me@linuxbox ~]$ ssh -X รีโมท sys
รหัสผ่านของ me@remote-sys:
เข้าสู่ระบบครั้งล่าสุด: จันทร์ ก.ย. 08 13:23:11 2016 [me@remote-sys ~]$ เอ็กซ์โหลด
หลังจาก เอ็กซ์โหลด คำสั่งถูกดำเนินการบนระบบรีโมตหน้าต่างจะปรากฏขึ้นบนระบบโลคัล ในบางระบบ คุณอาจต้องใช้ตัวเลือก "-Y" แทนตัวเลือก "-X" เพื่อดำเนินการนี้