<ก่อนหน้านี้ | เนื้อหา | ถัดไป>
โปรดทราบว่าการแสดงหน้าต่างเทอร์มินัลจากเครื่องระยะไกลถือเป็นการแสดงรูปภาพด้วย
10.4.4. ชุด SSH
10.4.4.1. บทนำ
ระบบ UNIX และ Linux ส่วนใหญ่ใช้ Secure SHell เพื่อหลีกเลี่ยงความเสี่ยงด้านความปลอดภัยที่มาพร้อมกับ Telnet. ระบบ Linux ส่วนใหญ่จะเรียกใช้ OpenSSH เวอร์ชันหนึ่ง ซึ่งเป็นการนำโปรโตคอล SSH ไปใช้งานแบบโอเพ่นซอร์ส ซึ่งให้การสื่อสารที่เข้ารหัสอย่างปลอดภัยระหว่างโฮสต์ที่ไม่น่าเชื่อถือบนเครือข่ายที่ไม่น่าเชื่อถือ ในการตั้งค่ามาตรฐาน การเชื่อมต่อ X จะถูกส่งต่อโดยอัตโนมัติ แต่พอร์ต TCP/IP ตามอำเภอใจอาจถูกส่งต่อโดยใช้ช่องทางที่ปลอดภัย
พื้นที่ SSH ไคลเอนต์เชื่อมต่อและล็อกอินเข้าสู่ชื่อโฮสต์ที่ระบุ ผู้ใช้ต้องระบุตัวตนของเขากับเครื่องระยะไกลตามที่ระบุใน sshd_config ไฟล์ซึ่งมักจะพบใน /etc/ssh. ไฟล์คอนฟิกูเรชันค่อนข้างอธิบายได้ชัดเจน และโดยค่าเริ่มต้นแล้วจะเปิดใช้งานคุณลักษณะทั่วไปส่วนใหญ่ หากคุณต้องการความช่วยเหลือ คุณสามารถหาได้ใน sshd หน้าคน
เมื่อเซิร์ฟเวอร์ยอมรับข้อมูลประจำตัวของผู้ใช้ เซิร์ฟเวอร์จะดำเนินการคำสั่งที่ให้มา หรือเข้าสู่ระบบเครื่องและมอบเชลล์ปกติให้กับผู้ใช้บนเครื่องระยะไกล การสื่อสารทั้งหมดด้วยคำสั่งระยะไกลหรือเชลล์จะได้รับการเข้ารหัสโดยอัตโนมัติ
เซสชันจะสิ้นสุดลงเมื่อคำสั่งหรือเชลล์บนเครื่องระยะไกลออก และการเชื่อมต่อ X11 และ TCP/IP ทั้งหมดถูกปิด
เมื่อเชื่อมต่อกับโฮสต์เป็นครั้งแรก โดยใช้โปรแกรมใดๆ ที่รวมอยู่ในคอลเล็กชัน SSH คุณต้องสร้างความถูกต้องของโฮสต์นั้นและรับทราบว่าคุณต้องการเชื่อมต่อ:
เลนนี่ ~> ssh หยด
ไม่สามารถสร้างความถูกต้องของโฮสต์ 'blob (10.0.0.1)' ลายนิ้วมือ RSA คือ 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d คุณแน่ใจหรือว่าต้องการเชื่อมต่อต่อ (ใช่/ไม่ใช่) ใช่
คำเตือน: เพิ่ม 'blob,192.168.30.2' (RSA) อย่างถาวรในรายการโฮสต์ที่รู้จัก
เข้าสู่ระบบครั้งล่าสุด: ส. 28 ธ.ค. 13:29:19 2002 จาก octarine พื้นที่นี้ให้เช่า
เลนนี่อยู่ใน ~
เลนนี่ ~> ssh หยด
ไม่สามารถสร้างความถูกต้องของโฮสต์ 'blob (10.0.0.1)' ลายนิ้วมือ RSA คือ 18:30:50:46:ac:98:3c:93:1a:56:35:09:8d:97:e3:1d คุณแน่ใจหรือว่าต้องการเชื่อมต่อต่อ (ใช่/ไม่ใช่) ใช่
คำเตือน: เพิ่ม 'blob,192.168.30.2' (RSA) อย่างถาวรในรายการโฮสต์ที่รู้จัก
เข้าสู่ระบบครั้งล่าสุด: ส. 28 ธ.ค. 13:29:19 2002 จาก octarine พื้นที่นี้ให้เช่า
เลนนี่อยู่ใน ~
สิ่งสำคัญคือคุณต้องพิมพ์ "ใช่" ด้วยอักขระสามตัว ไม่ใช่แค่ "y" สิ่งนี้จะแก้ไข .ของคุณ ~/.ssh/known_hosts
ไฟล์ ดูหัวข้อ 10.4.4.3
หากคุณต้องการตรวจสอบบางอย่างบนเครื่องระยะไกลแล้วรับข้อความแจ้งของคุณกลับมาที่โฮสต์ท้องถิ่น คุณสามารถให้คำสั่งที่คุณต้องการเรียกใช้จากระยะไกลเป็นอาร์กิวเมนต์ได้ SSH:
เลนนี่ ~> ssh blob ใคร
รหัสผ่านของ jenny@blob:
ราก | tty2 | กรกฎาคม | 24 | 07:19 |
lena | tty3 | กรกฎาคม | 23 | 22:24 |
lena | 0: | กรกฎาคม | 25 | 22:03 |
เลนนี่ ~> อูเนม -n
magrat.example.com
10.4.4.2. การส่งต่อ X11 และ TCP
ถ้า X11 ส่งต่อ รายการถูกกำหนดเป็น ใช่ บนเครื่องเป้าหมายและผู้ใช้กำลังใช้แอปพลิเคชัน X, the การแสดงผล ตั้งค่าตัวแปรสภาพแวดล้อมแล้ว การเชื่อมต่อกับจอแสดงผล X11 จะถูกส่งต่อโดยอัตโนมัติไปยังฝั่งระยะไกลเพื่อให้โปรแกรม X11 ที่เริ่มต้นจากเชลล์ผ่านช่องสัญญาณที่เข้ารหัส และการเชื่อมต่อกับเซิร์ฟเวอร์ X จริงจะทำจาก เครื่องท้องถิ่น ผู้ใช้ไม่ควรตั้งค่าด้วยตนเอง การแสดงผล. การส่งต่อการเชื่อมต่อ X11 สามารถกำหนดค่าได้บนบรรทัดคำสั่งหรือใน sshd ไฟล์การกำหนดค่า
ค่าสำหรับ การแสดงผล ตั้งโดย SSH จะชี้ไปที่เครื่องเซิร์ฟเวอร์ แต่มีตัวเลขที่แสดงมากกว่าศูนย์ เป็นเรื่องปกติและเกิดขึ้นเพราะ SSH สร้าง หนังสือมอบฉันทะ เซิร์ฟเวอร์ X บนเครื่องเซิร์ฟเวอร์ (ที่รันแอปพลิเคชันไคลเอนต์ X) สำหรับการส่งต่อการเชื่อมต่อผ่านช่องทางที่เข้ารหัส
ทั้งหมดนี้ทำโดยอัตโนมัติ ดังนั้นเมื่อคุณพิมพ์ชื่อแอปพลิเคชันแบบกราฟิก แอปพลิเคชันนั้นจะแสดงบนเครื่องในพื้นที่ของคุณ ไม่ใช่บนโฮสต์ระยะไกล เราใช้ xclock ในตัวอย่าง เนื่องจากเป็นโปรแกรมขนาดเล็กซึ่งโดยทั่วไปแล้วจะติดตั้งและเหมาะสำหรับการทดสอบ:
รูปที่ 10-3 การส่งต่อ SSH X11
SSH จะตั้งค่าข้อมูล Xauthority บนเครื่องเซิร์ฟเวอร์โดยอัตโนมัติ เพื่อจุดประสงค์นี้ มันจะสร้างคุกกี้การให้สิทธิ์แบบสุ่ม เก็บไว้ใน ผู้มีอำนาจ บนเซิร์ฟเวอร์ และตรวจสอบว่าการเชื่อมต่อที่ส่งต่อมีคุกกี้นี้และแทนที่ด้วยคุกกี้จริงเมื่อเปิดการเชื่อมต่อ คุกกี้การรับรองความถูกต้องที่แท้จริงจะไม่ถูกส่งไปยังเครื่องเซิร์ฟเวอร์ (และไม่มีการส่งคุกกี้ในที่ราบ)
การส่งต่อการเชื่อมต่อ TCP/IP ตามอำเภอใจผ่านช่องทางที่ปลอดภัยสามารถระบุได้ในบรรทัดคำสั่งหรือในไฟล์การกำหนดค่า
เซิร์ฟเวอร์ X
กระบวนงานนี้อนุมานว่าคุณมีเซิร์ฟเวอร์ X ที่กำลังทำงานอยู่บนไคลเอนต์ที่คุณต้องการแสดงแอปพลิเคชันจากโฮสต์ระยะไกล ไคลเอนต์อาจมีสถาปัตยกรรมและระบบปฏิบัติการที่แตกต่างจากโฮสต์ระยะไกล ตราบใดที่สามารถเรียกใช้เซิร์ฟเวอร์ X เช่น Cygwin (ซึ่งใช้เซิร์ฟเวอร์ X.org สำหรับไคลเอนต์ MS Windows และอื่น ๆ ) หรือเกินควร เพื่อตั้งค่าการเชื่อมต่อระยะไกลกับเครื่อง Linux หรือ UNIX
10.4.4.3. การตรวจสอบเซิร์ฟเวอร์
พื้นที่ SSH ระบบไคลเอนต์/เซิร์ฟเวอร์จะดูแลและตรวจสอบฐานข้อมูลที่มีการระบุตัวตนโดยอัตโนมัติสำหรับโฮสต์ทั้งหมดที่เคยใช้งานด้วย คีย์โฮสต์ถูกเก็บไว้ใน $HOME/.ssh/known_hosts ในโฮมไดเร็กทอรีของผู้ใช้ นอกจากนี้ไฟล์ /etc/ssh/ssh_known_hosts จะถูกตรวจสอบโดยอัตโนมัติสำหรับโฮสต์ที่รู้จัก โฮสต์ใหม่จะถูกเพิ่มลงในไฟล์ของผู้ใช้โดยอัตโนมัติ หากการระบุตัวตนของโฮสต์มีการเปลี่ยนแปลง SSH เตือนเกี่ยวกับสิ่งนี้และปิดใช้งานการตรวจสอบรหัสผ่านเพื่อป้องกันไม่ให้ม้าโทรจันได้รับรหัสผ่านของผู้ใช้
จุดประสงค์อีกประการของกลไกนี้คือการป้องกันการโจมตีแบบคนกลาง ซึ่งอาจใช้เพื่อหลีกเลี่ยงการเข้ารหัสได้ ในสภาพแวดล้อมที่ต้องการความปลอดภัยสูง sshd ยังสามารถกำหนดค่าเพื่อป้องกันการเข้าสู่ระบบไปยังเครื่องที่คีย์โฮสต์มีการเปลี่ยนแปลงหรือไม่ทราบ
10.4.4.4. การคัดลอกระยะไกลอย่างปลอดภัย
ชุด SSH ให้บริการ SCP เป็นทางเลือกที่ปลอดภัยแทน cpr คำสั่งที่เคยนิยมเมื่อเท่านั้น รช
มีอยู่ SCP ใช้ SSH สำหรับการถ่ายโอนข้อมูล ใช้การรับรองความถูกต้องเดียวกันและให้การรักษาความปลอดภัยเช่นเดียวกับ SSH. แตกต่าง cpr, SCP จะขอรหัสผ่านหรือข้อความรหัสผ่านหากจำเป็นสำหรับการตรวจสอบสิทธิ์:
เลนนี่ /var/tmp> scp Schedule.sdc.gz หยด:/var/tmp/
รหัสผ่านของ lenny@blob:
Schedule.sdc.gz 100% |*****************************| 100 KB 00:00 น.
เลนนี่ /var/tmp>
เลนนี่ /var/tmp> scp Schedule.sdc.gz หยด:/var/tmp/
รหัสผ่านของ lenny@blob:
Schedule.sdc.gz 100% |*****************************| 100 KB 00:00 น.
เลนนี่ /var/tmp>
ชื่อไฟล์ใดๆ อาจมีข้อกำหนดโฮสต์และผู้ใช้เพื่อระบุว่าไฟล์นั้นจะถูกคัดลอกไปยัง/จากโฮสต์นั้น อนุญาตให้ทำสำเนาระหว่างโฮสต์ระยะไกลสองเครื่อง ดูหน้าข้อมูลสำหรับข้อมูลเพิ่มเติม
หากคุณต้องการใช้อินเทอร์เฟซแบบ FTP ให้ใช้ SFTP:
เลนนี่ /var/tmp> sftp หยด กำลังเชื่อมต่อกับ blob... lenny@blob's password:
sftp> ซีดี /var/tmp
sftp> รับ Sch*
กำลังดึงข้อมูล /var/tmp/Schedule.sdc.gz ไปยัง Schedule.sdc.gz sftp> ลาก่อน
เลนนี่ /var/tmp>
เลนนี่ /var/tmp> sftp หยด กำลังเชื่อมต่อกับ blob... lenny@blob's password:
sftp> ซีดี /var/tmp
sftp> รับ Sch*
กำลังดึงข้อมูล /var/tmp/Schedule.sdc.gz ไปยัง Schedule.sdc.gz sftp> ลาก่อน
เลนนี่ /var/tmp>
สำเนาที่ปลอดภัยหรือ FTP GUIs
รู้สึกไม่สบายใจกับบรรทัดคำสั่งหรือยัง ลองใช้ความสามารถของ Konqueror เพื่อการคัดลอกระยะไกลที่ปลอดภัย หรือติดตั้ง Putty
10.4.4.5. คีย์การตรวจสอบสิทธิ์
พื้นที่ SSH-keygen คำสั่งสร้าง จัดการ และแปลงคีย์การพิสูจน์ตัวตนสำหรับ SSH. สามารถสร้างคีย์ RSA สำหรับใช้โดยโปรโตคอล SSH เวอร์ชัน 1 และคีย์ RSA หรือ DSA สำหรับใช้โดยโปรโตคอล SSH เวอร์ชัน 2
โดยปกติผู้ใช้แต่ละคนที่ต้องการใช้ SSH กับการตรวจสอบสิทธิ์ RSA หรือ DSA จะดำเนินการนี้เพียงครั้งเดียวเพื่อสร้างคีย์การตรวจสอบสิทธิ์ใน $HOME/.ssh/identity, id_dsa or id_rsa. นอกจากนี้ ผู้ดูแลระบบอาจใช้สิ่งนี้เพื่อสร้างโฮสต์คีย์สำหรับระบบ
โดยปกติโปรแกรมนี้จะสร้างคีย์และขอไฟล์ที่จะเก็บคีย์ส่วนตัว กุญแจสาธารณะถูกเก็บไว้ในไฟล์ที่มีชื่อเดียวกันแต่ .ผับ ต่อท้าย โปรแกรมยังขอข้อความรหัสผ่าน ข้อความรหัสผ่านอาจว่างเปล่าเพื่อระบุว่าไม่มีข้อความรหัสผ่าน (คีย์โฮสต์ต้องมีข้อความรหัสผ่านที่ว่างเปล่า) หรืออาจเป็นสตริงที่มีความยาวตามอำเภอใจ
ไม่มีทางที่จะกู้คืนข้อความรหัสผ่านที่หายไปได้ หากข้อความรหัสผ่านสูญหายหรือลืม จะต้องสร้างคีย์ใหม่และคัดลอกไปยังคีย์สาธารณะที่เกี่ยวข้อง
เราจะศึกษาคีย์ SSH ในแบบฝึกหัด ข้อมูลทั้งหมดสามารถพบได้ใน man หรือหน้าข้อมูล