ใช้ OpenSSH เพื่อจัดเตรียมสภาพแวดล้อมที่ปลอดภัยสำหรับการรันเทอร์มินัลระยะไกล การใช้งาน OpenSSH และเทอร์มินัลขั้นพื้นฐานนั้นง่ายมาก แต่บทความนี้ยังครอบคลุมถึงองค์ประกอบอื่นๆ ที่อนุญาตให้เข้าสู่ระบบโฮสต์ระยะไกลโดยอัตโนมัติ วิธีเรียกใช้แอปพลิเคชันระยะไกล และวิธีการคัดลอกไฟล์ระหว่างโฮสต์อย่างปลอดภัย
เกี่ยวกับซีรีย์นี้
ผู้ดูแลระบบ UNIX® ทั่วไปมีชุดยูทิลิตี้หลัก ความรู้ และระบบที่มักใช้เพื่อช่วยในกระบวนการดูแลระบบ มียูทิลิตีหลัก กลุ่มบรรทัดคำสั่ง และสคริปต์ต่างๆ เพื่อปรับปรุงกระบวนการต่างๆ เครื่องมือเหล่านี้บางส่วนมาจากระบบปฏิบัติการ แต่ความรู้ส่วนใหญ่มาจากประสบการณ์ที่ยาวนานและความจำเป็นในการลดความเครียดในงานของผู้ดูแลระบบ บทความชุดนี้มุ่งเน้นไปที่การใช้ประโยชน์สูงสุดจากเครื่องมือที่มีอยู่ในสภาพแวดล้อม UNIX ต่างๆ รวมถึงวิธีการลดความซับซ้อนของงานการดูแลระบบในสภาพแวดล้อมที่ต่างกัน
ทำไมต้องใช้ OpenSSH?
บริการเครือข่ายมาตรฐานที่คุณใช้ทุกวัน เช่น FTP, Telnet, RCP, Remote Shell (rsh) ฯลฯ ทำงานได้ดีในสภาพแวดล้อมแบบปิด แต่ข้อมูลที่ส่งผ่านเครือข่ายโดยใช้บริการเหล่านี้ไม่มีการเข้ารหัส ใครก็ตามที่ใช้การดมแพ็กเก็ตบนเครือข่ายของคุณหรือคอมพิวเตอร์ระยะไกลสามารถดูข้อมูลที่แลกเปลี่ยนและบางครั้งแม้แต่ข้อมูลรหัสผ่าน
นอกจากนี้ ด้วยบริการดังกล่าวทั้งหมด ตัวเลือกในการทำให้กระบวนการเข้าสู่ระบบอัตโนมัติมีจำกัด และมักจะอาศัยการฝังรหัสผ่านข้อความธรรมดาลงในบรรทัดคำสั่งเพื่อดำเนินการคำสั่ง ทำให้กระบวนการเข้าสู่ระบบไม่ปลอดภัยมากยิ่งขึ้น
โปรโตคอล Secure Shell (SSH) ได้รับการพัฒนาขึ้นเพื่อหลีกเลี่ยงข้อจำกัดเหล่านี้ SSH ให้การเข้ารหัสสำหรับช่องทางการสื่อสารทั้งหมด รวมถึงการแลกเปลี่ยนข้อมูลรับรองการเข้าสู่ระบบและรหัสผ่าน และทำงานร่วมกับคีย์สาธารณะและคีย์ส่วนตัวเพื่อให้การตรวจสอบความถูกต้องอัตโนมัติสำหรับการเข้าสู่ระบบ คุณยังสามารถใช้ SSH เป็นโปรโตคอลการขนส่งพื้นฐานได้ การใช้ SSH ในลักษณะนี้หมายความว่าหลังจากเปิดการเชื่อมต่อที่ปลอดภัยแล้ว ข้อมูลทุกประเภทสามารถแลกเปลี่ยนผ่านช่องทางที่เข้ารหัสได้ และแม้แต่ HTTP และ SMTP ก็สามารถใช้วิธีนี้เพื่อรักษาความปลอดภัยกลไกการสื่อสารได้
OpenSSH เป็นการใช้งานโปรโตคอล SSH 1 และ SSH 2 ฟรี เดิมได้รับการพัฒนาโดยเป็นส่วนหนึ่งของระบบปฏิบัติการ OpenBSD (Berkeley Software Distribution) และปัจจุบันเปิดตัวเป็นโซลูชันทั่วไปสำหรับ UNIX หรือ Linux® และระบบปฏิบัติการที่คล้ายกัน
ติดตั้ง OpenSSH
OpenSSH เป็นซอฟต์แวร์ฟรีและสามารถดาวน์โหลดได้จากเว็บไซต์ OpenSSH หลัก (ดูแหล่งข้อมูล) ระบบ OpenSSH สามารถสร้างขึ้นจากซอร์สโค้ดบนระบบต่างๆ รวมถึง Linux, HP-UX, AIX®, Solaris, Mac OS X และอื่นๆ โดยปกติแล้วจะเป็นไปได้ที่จะค้นหาไบนารีที่คอมไพล์แล้วสำหรับแพลตฟอร์มและเวอร์ชันที่คุณเลือก ผู้จำหน่ายบางรายถึงกับจัดเตรียมชุดเครื่องมือ OpenSSH ให้เป็นส่วนหนึ่งของระบบปฏิบัติการ
ในการสร้าง OpenSSH คุณต้องมีสิ่งต่อไปนี้:
หากคุณต้องการใช้การตั้งค่าเริ่มต้น ให้ใช้ลำดับการสร้างปกติ ดังแสดงในรายการ 1 ด้านล่าง
$ ./configure $ ทำ $ ทำการติดตั้ง |
ซึ่งจะติดตั้งไบนารี ไลบรารี และไฟล์คอนฟิกูเรชันลงในไดเร็กทอรี /usr/local ตัวอย่างเช่น ไบนารีไปยัง /usr/local/bin และไฟล์คอนฟิกูเรชันไปที่ /usr/local/etc หากคุณต้องการรวมเครื่องมือต่างๆ เข้ากับสภาพแวดล้อมหลัก คุณอาจต้องระบุตัวเลือก --prefix เพื่อตั้งค่าไดเร็กทอรีฐาน และตัวเลือก --sysconfdir เพื่อตั้งค่าตำแหน่งไฟล์คอนฟิกูเรชัน:
$ ./configure --prefix=/usr --sysconfidir=/etc/ssh |
ตัวเลือกทั่วไปอื่นๆ ที่คุณอาจระบุ ได้แก่:
หลังจากเสร็จสิ้นการกำหนดค่าแล้ว ให้ใช้ make เพื่อสร้างตามปกติ
หลังจากกระบวนการสร้างและติดตั้งเสร็จสมบูรณ์ คุณต้องกำหนดค่าระบบโดยการสร้างคีย์ SSH ที่ระบุระบบโดยไม่ซ้ำกันก่อน จากนั้นจึงเปิดใช้งานการสื่อสารที่ปลอดภัยระหว่างไคลเอนต์และโฮสต์ คุณสามารถเรียกใช้:
$ สร้างคีย์โฮสต์ |
หรือคุณสามารถดำเนินการแต่ละขั้นตอนด้วยตนเองบนบรรทัดคำสั่งได้ คุณต้องสร้างคีย์สามคีย์ (หนึ่งคีย์สำหรับอัลกอริธึมการเข้ารหัสหลักแต่ละตัว: rsa1, rsa และ dsa) ตัวอย่างเช่น รายการ 2 จะแสดงวิธีสร้างคีย์ rsa1
$ ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key กำลังสร้างคู่คีย์ rsa1 สาธารณะ/ส่วนตัว ป้อนข้อความรหัสผ่าน (เว้นว่างหากไม่มีข้อความรหัสผ่าน): ป้อนรหัสผ่านเดิมอีกครั้ง: ข้อมูลประจำตัวของคุณได้รับการบันทึกไว้ใน /etc/ssh//ssh_host_key รหัสสาธารณะของคุณได้รับการบันทึกไว้ใน /etc/ssh//ssh_host_key.pub ลายนิ้วมือที่สำคัญคือ: 43:aa:58:3c:d8:30:de:43:af:66:2a:b2:8d:02:08:86 root@remotehost |
คุณได้รับพร้อมท์ให้ใส่รหัสผ่านของคุณ สำหรับคีย์โฮสต์ คุณอาจไม่จำเป็นต้องใช้รหัสผ่านคีย์ ดังนั้นคุณจึงสามารถกด Return เพื่อใช้รหัสผ่านที่ว่างเปล่าได้ หรือคุณสามารถใช้ตัวเลือก -N บนบรรทัดคำสั่งเพื่อเร่งกระบวนการ (ดูรายการ 3)
$ ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N "" กำลังสร้างคู่คีย์ rsa1 สาธารณะ/ส่วนตัว ข้อมูลประจำตัวของคุณได้รับการบันทึกไว้ใน /etc/ssh/ssh_host_key รหัสสาธารณะของคุณได้รับการบันทึกไว้ใน /etc/ssh/ssh_host_key.pub ลายนิ้วมือที่สำคัญคือ: a3:e3:21:4f:b5:9f:ff:05:46:66:bc:36:a1:47:a0:64 root@remotehost |
ตอนนี้ทำซ้ำขั้นตอนเพื่อสร้างคีย์ rsa และ dsa (ดูรายการ 4)
$ ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" $ ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N "" |
สิ่งนี้จะสร้างไฟล์สองไฟล์สำหรับคีย์แต่ละประเภท: พับลิกคีย์ (ในไฟล์ที่ลงท้ายด้วย .pub) และคีย์ส่วนตัว คุณควรตรวจสอบให้แน่ใจว่าคีย์ส่วนตัวถูกอ่านโดยกระบวนการรูทและ SSH เท่านั้น - ควรกำหนดค่านี้โดยอัตโนมัติ คุณอาจต้องการคัดลอกคีย์สาธารณะไปยังตำแหน่งศูนย์กลางบน Network File System (NFS) ที่ใช้ร่วมกัน เพื่อให้บุคคลอื่นสามารถเพิ่มลงในรายการคีย์โฮสต์ที่รู้จักได้
สุดท้าย คุณต้องเริ่มกระบวนการ sshd และกำหนดค่าให้ดำเนินการเมื่อเริ่มต้นระบบ สำหรับโฮสต์ Linux คุณสามารถค้นหาสคริปต์เริ่มต้นที่เหมาะสมได้ใน contrib/redhat/sshd.init ที่สามารถเพิ่มลงใน /etc/init.d
การใช้ SSH สำหรับการเข้าถึงเทอร์มินัลขั้นพื้นฐาน
บทบาทหลักของ OpenSSH คือเครื่องมือ SSH ซึ่งเป็นทางเลือกที่ปลอดภัยแทนโปรโตคอล Telnet สำหรับการเข้าสู่ระบบระยะไกลที่ปลอดภัยไปยังโฮสต์ UNIX หรือ Linux
หากต้องการเชื่อมต่อกับโฮสต์ระยะไกลโดยใช้เชลล์มาตรฐาน คุณเพียงพิมพ์ชื่อโฮสต์:
$ssh โฮสต์ระยะไกล |
ตามค่าเริ่มต้น ระบบจะพยายามใช้ชื่อผู้ใช้ปัจจุบันเป็นชื่อเข้าสู่ระบบ หากต้องการใช้ชื่อล็อกอินอื่น ให้นำหน้าชื่อโฮสต์ด้วยชื่อล็อกอิน โดยคั่นด้วยสัญลักษณ์ @ ตัวอย่างเช่น:
$ ssh mc@remotehost |
คุณได้รับพร้อมท์ให้ใส่รหัสผ่านผู้ใช้ของคุณ ซึ่งคล้ายกับ Telnet
ครั้งแรกที่คุณเชื่อมต่อกับโฮสต์ ระบบจะถามว่าคุณต้องการบันทึกสำเนาของคีย์สาธารณะของโฮสต์ระยะไกลในไฟล์ "โฮสต์ที่รู้จัก" หรือไม่ (ดูรายการ 5)
$ ssh root@remotehost ไม่สามารถสร้างความถูกต้องของโฮสต์ 'remotehost (10.211.55.3)' ได้ ลายนิ้วมือคีย์ RSA คือ cc:c8:8b:75:3d:b6:00:2f:a9:9c:53:4c:03:0f:3d:1b คุณแน่ใจหรือไม่ว่าต้องการเชื่อมต่อต่อ (ใช่/ไม่ใช่) คำเตือน: เพิ่ม 'remotehost' (RSA) อย่างถาวรลงในรายการโฮสต์ที่รู้จัก |
ในอนาคต คุณจะไม่ได้รับคำเตือนนี้ แต่จะมีการออกคำเตือนเมื่อระบบตรวจพบว่าคีย์สาธารณะที่ส่งคืนโดยโฮสต์ระยะไกลไม่ตรงกับคีย์สาธารณะในไฟล์ของโฮสต์ ซึ่งบ่งชี้ว่าแฮกเกอร์อาจโจมตีได้ นอกจากนี้ยังอาจหมายความว่าผู้ดูแลระบบสร้างเฉพาะคีย์โฮสต์ใหม่เท่านั้น
โดยพื้นฐานแล้ว ไม่มีความแตกต่างระหว่างเซสชัน SSH และ Telnet ยกเว้นว่าเซสชัน SSH จะได้รับการเข้ารหัส ทำให้แทบจะเป็นไปไม่ได้เลยที่ใครก็ตามจะสอดแนมเข้าสู่เซสชันของคุณหรือรู้รหัสผ่านของคุณหรือคำสั่งและการดำเนินการที่คุณกำลังดำเนินการ
คุณยังสามารถใช้ SSH เพื่อรันคำสั่งได้โดยตรงบนรีโมตโฮสต์โดยไม่ต้องใช้เชลล์ ตัวอย่างเช่น หากต้องการรันคำสั่ง who บนรีโมตโฮสต์ โปรดดูรายการ 6
รายการ 6. การรันคำสั่ง who บนรีโมตโฮสต์$ ssh mc@remotehost ใคร คอนโซลผู้ดูแลระบบ 23 พ.ย. 14:04 น mc ttyp1 2 ธ.ค. 10:53 (sulaco.mcslp.pri) mc ttyp2 10 ธ.ค. 06:50 น. (sulaco.mcslp.pri) ผู้ดูแลระบบ ttyp3 12 ธ.ค. 13:33 น mc ttyp4 15 ธ.ค. 12:38 น. (nautilus.mcslp.p) |
การดำเนินการระยะไกลยังจำลองอินพุต เอาท์พุต และข้อผิดพลาดมาตรฐานของโฮสต์ไคลเอ็นต์อีกด้วย ซึ่งหมายความว่าคุณสามารถเปลี่ยนเส้นทางเอาต์พุตไปยังคำสั่งระยะไกลได้ ตัวอย่างเช่น คุณสามารถผนวกข้อมูลเข้ากับไฟล์ระยะไกลได้โดยตรงโดยไพพ์เอาท์พุตจากคำสั่งไปยัง SSH บนรีโมตโฮสต์ (ดูรายการ 7)
รายการ 7. การผนวกข้อมูลโดยตรงกับไฟล์ระยะไกล$ echo "สวัสดีชาวโลก" |ssh mc@remotehost 'cat >> helloworlds.txt' |
คุณสามารถใช้วิธีนี้เพื่อเพิ่มประสิทธิภาพการทำงานของคุณเมื่อใช้ SSH เพื่อทำให้กระบวนการเข้าสู่ระบบง่ายขึ้น
การแลกเปลี่ยนไฟล์โดยใช้ SFTP
คำสั่ง sft เป็นอีกทางเลือกหนึ่งของ FTP ที่ใช้ช่องทางการสื่อสารที่ปลอดภัยซึ่งจัดทำโดยโปรโตคอล SSH
หากต้องการเปิดการเชื่อมต่อ SFTP ให้ระบุชื่อโฮสต์บนบรรทัดคำสั่ง:
$ sftp โฮสต์ระยะไกล |
โปรดทราบว่าคำสั่งข้างต้นถือว่าคุณต้องการใช้วิธีการเข้าสู่ระบบแบบเดียวกับโฮสต์ปัจจุบันของคุณ หากต้องการใช้วิธีการเข้าสู่ระบบอื่น ให้ใส่ชื่อผู้ใช้ไว้หน้าชื่อโฮสต์:
$ sftp mc@remotehost |
แม้ว่า SFTP จะทำงานคล้ายกับ FTP แต่ก็มีข้อจำกัดและความแตกต่างบางประการ ตัวอย่างเช่น dir ใน FTP จัดให้มีรายการไฟล์ขนาดยาว (ดูรายการ 8)
ftp> ผบ 502 'EPSV': ไม่เข้าใจคำสั่ง 227 เข้าสู่โหมดพาสซีฟ (192,168,0,110,150,159) 150 การเปิดการเชื่อมต่อข้อมูลโหมด ASCII สำหรับรายการไดเร็กทอรี รวม 1472 drwx------ เจ้าหน้าที่ 3 mc 102 4 พ.ย. 11:17 เดสก์ท็อป drwx------ เจ้าหน้าที่ 3 คน 102 4 พ.ย. 11:17 เอกสาร drwx------ 18 mc พนักงาน 612 5 พ.ย. 18:01 ห้องสมุด drwx------ เจ้าหน้าที่ 3 mc 102 4 พ.ย. 11:17 ภาพยนตร์ drwx------ เจ้าหน้าที่ 3 mc 102 4 พ.ย. 11:17 ดนตรี drwx------ พนักงาน 4 คน 136 4 พ.ย. 11:17 รูปภาพ drwxr-xr-x 4 mc พนักงาน 136 4 พ.ย. 11:17 สาธารณะ drwxr-xr-x 6 mc พนักงาน 204 4 พ.ย. 11:17 ไซต์ drwxrwxrwx 3 พนักงานรูท 102 24 ธ.ค. 07:30 tmp drwxr-xr-x 7 พนักงานรูต 238 11 ธ.ค. 08:39 น. ทดลองใช้ 226 การโอนเสร็จสมบูรณ์. |
ใน SFTP นั้น dir ทำหน้าที่เป็นนามแฝงสำหรับคำสั่งรายการไดเร็กทอรีโฮสต์ ซึ่งก็คือ ls ใน UNIX หรือ Linux ตามค่าเริ่มต้น dir จัดเตรียมรายการสั้นๆ เท่านั้น (ดูรายการ 9)
sftp> ผบ เดสก์ท็อป เอกสาร ห้องสมุด ภาพยนตร์ เพลง รูปภาพ สาธารณะ ไซต์ทดลองใช้ tmp |
หากต้องการรับรายการแบบยาว ให้ใช้ตัวเลือกเดียวกับ ls (ดูรายการ 10)
sftp> dir -l drwx------ เจ้าหน้าที่ 3 mc 102 4 พ.ย. 11:17 เดสก์ท็อป drwx------ เจ้าหน้าที่ 3 คน 102 4 พ.ย. 11:17 เอกสาร drwx------ 18 mc พนักงาน 612 5 พ.ย. 18:01 ห้องสมุด drwx------ เจ้าหน้าที่ 3 mc 102 4 พ.ย. 11:17 ภาพยนตร์ drwx------ เจ้าหน้าที่ 3 mc 102 4 พ.ย. 11:17 ดนตรี drwx------ พนักงาน 4 คน 136 4 พ.ย. 11:17 รูปภาพ drwxr-xr-x 4 mc พนักงาน 136 4 พ.ย. 11:17 สาธารณะ drwxr-xr-x 6 mc พนักงาน 204 4 พ.ย. 11:17 ไซต์ drwxrwxrwx 3 พนักงานรูท 102 24 ธ.ค. 07:30 tmp drwxr-xr-x 7 พนักงานรูต 238 11 ธ.ค. 08:39 น. ทดลองใช้ |
คำสั่งอื่นๆ เช่น การเปลี่ยนไดเร็กทอรี (cd, lcd ในเครื่อง), การสร้างไดเร็กทอรี (mkdir) และการส่ง (ใส่) และรับ (รับ) ไฟล์ยังคงไม่เปลี่ยนแปลง สองคำสั่งหลัง ใส่และรับ ทั้งคู่ยอมรับไวด์การ์ด (คล้ายกับ mput และ mget ใน FTP) แต่ควรระมัดระวังเมื่อถ่ายโอนหลายไฟล์โดยไม่มีไวด์การ์ดใน SFTP ตัวอย่างเช่น sftp> mget file1 file2 file3 ได้รับการยอมรับว่าพยายามรับ file1 และ file2 และวางไว้ในไดเร็กทอรีในเครื่อง file3 แต่ไดเร็กทอรีนั้นอาจไม่มีอยู่
คัดลอกไฟล์ระหว่างโฮสต์โดยใช้ scp
คำสั่ง scp ทำงานคล้ายกับคำสั่ง rc ยกเว้นว่าจะใช้โปรโตคอล SSH ในการถ่ายโอนไฟล์ เมื่อถ่ายโอนไฟล์ที่เกี่ยวข้องกับเนื้อหาหรือแลกเปลี่ยนไฟล์บนอินเทอร์เน็ตโดยอัตโนมัติ scp จะดีกว่ามาก
รูปแบบจะคล้ายกับ rcp โดยคุณระบุเส้นทางของไฟล์ที่จะคัดลอกระหว่างนั้น และควรรวมชื่อโฮสต์เข้าไปหากจำเป็น ตัวอย่างเช่น หากต้องการคัดลอกไฟล์ .bashrc จากโฮสต์ระยะไกลไปยังเครื่องภายในของคุณ ให้ใช้:
$ scp โฮสต์ระยะไกล:/users/mc/.bashrc ~/.bashrc |
เช่นเคย หากต้องการระบุชื่อผู้ใช้ที่จะใช้ ให้นำชื่อผู้ใช้นำหน้าโฮสต์ โดยคั่นด้วยสัญลักษณ์ @:
$ scp mc@remotehost:/users/mc/.bashrc ~/.bashrc |
สมมติว่าผู้ใช้ที่คุณกำลังเชื่อมต่อมีสิทธิ์ในการอ่าน คุณจะต้องใช้อักขระเมตา ~ เพื่อเข้าถึงข้อมูลในโฮมไดเร็กตอรี่ของคุณ
$ scp mc@remotehost:~mc/.bashrc ~/.bashrc |
หากต้องการคัดลอกจากโฮมไดเร็กทอรีของผู้ใช้ที่เข้าสู่ระบบ ให้ใช้:
$ scp mc@remotehost:.bashrc ~/.bashrc |
คำสั่ง scp ยังรองรับกฎการขยายมาตรฐานด้วย ดังนั้น หากต้องการคัดลอกไฟล์ .bash* ทั้งหมด คุณสามารถใช้:
$ scp mc@remotehost:.bash* ~ |
คุณสามารถเลือกแต่ละไฟล์ให้เจาะจงยิ่งขึ้นได้โดยใช้เครื่องหมายปีกกาขยาย ({}):
$ scp mc@remotehost:".ทุบตี{rc,_path,_aliases,_vars}" ~ |
โปรดทราบว่าเครื่องหมายปีกกาขยายในเส้นทางของไฟล์ (ไม่ใช่นิพจน์เส้นทางระยะไกลแบบเต็ม) จะอยู่ในเครื่องหมายคำพูดคู่
ในตัวอย่างข้างต้นทั้งหมด คุณจะได้รับแจ้งให้ใส่รหัสผ่านของโฮสต์ระยะไกล สิ่งนี้สามารถหลีกเลี่ยงได้โดยจัดเตรียมส่วนสาธารณะของรหัสส่วนตัวของคุณให้กับโฮสต์
เปิดใช้งานการเข้าสู่ระบบอัตโนมัติโดยใช้รหัสสาธารณะ
เมื่อคุณเข้าสู่ระบบระยะไกลโดยใช้ ssh, sftp หรือ scp คุณยังคงต้องใช้รหัสผ่านเพื่อดำเนินกระบวนการเข้าสู่ระบบให้เสร็จสิ้น ด้วยการสร้างคีย์สาธารณะหรือส่วนตัว เพิ่มส่วนสาธารณะของคีย์ต่อท้ายไฟล์ ~/.ssh/authorized_keys และการแลกเปลี่ยนคีย์ที่ถูกต้องกับไซต์ระยะไกล คุณสามารถขจัดข้อกำหนดในการระบุรหัสผ่านและอนุญาตให้เข้าสู่ระบบอัตโนมัติได้
หากต้องการสร้างคีย์สาธารณะหรือส่วนตัว คุณต้องใช้ ssh-keygen เพื่อระบุประเภทของการเข้ารหัสคีย์ ประเภทคีย์ rsa ใช้ในการสาธิต แต่ประเภทคีย์อื่นๆ ก็ใช้ได้เช่นกัน หากต้องการสร้างคีย์ โปรดดูรายการ 11
$ ssh-keygen-trsa กำลังสร้างคู่คีย์ rsa สาธารณะ/ส่วนตัว ป้อนไฟล์ที่จะบันทึกคีย์ (/root/.ssh/id_rsa): |
คุณควรป้อนตำแหน่งของไฟล์ที่เก็บคีย์ (คอมโพเนนต์สาธารณะและส่วนตัว) การใช้ค่าเริ่มต้น (ในไดเร็กทอรี .ssh ในโฮมไดเร็กตอรี่ของคุณ) มักจะใช้ได้ (ดูรายการ 12)
สร้างไดเรกทอรี '/root/.ssh' ป้อนข้อความรหัสผ่าน (เว้นว่างหากไม่มีข้อความรหัสผ่าน): |
หากคุณป้อนรหัสผ่านในขั้นตอนนี้ ไฟล์รหัสความปลอดภัยจะถูกสร้างขึ้น แต่คุณต้องป้อนรหัสผ่านทุกครั้งที่คุณใช้รหัสด้วย การกด Return หมายความว่าไม่จำเป็นต้องใช้รหัสผ่าน (ดูรายการ 13)
รายการ 13. ข้ามข้อกำหนดรหัสผ่านโดยกด Returnป้อนรหัสผ่านเดิมอีกครั้ง: ข้อมูลประจำตัวของคุณได้รับการบันทึกไว้ใน /root/.ssh/id_rsa รหัสสาธารณะของคุณได้รับการบันทึกไว้ใน /root/.ssh/id_rsa.pub ลายนิ้วมือที่สำคัญคือ: 98:ดา:8d:48:a8:09:44:b1:b3:62:51:2d:a9:6b:61:ba root@remotehost |
รหัสสาธารณะ (id_rsa.pub) และรหัสส่วนตัวที่เกี่ยวข้อง (id_rsa) ได้ถูกสร้างขึ้นแล้ว
หากต้องการเปิดใช้งานการเข้าสู่ระบบอัตโนมัติ คุณต้องคัดลอกเนื้อหาของคีย์สาธารณะไปยังไฟล์authorized_keysในไดเร็กทอรี ~/.ssh บนรีโมตโฮสต์ คุณสามารถทำให้สิ่งนี้เป็นอัตโนมัติได้โดยใช้ SSH (ดูรายการ 14)
$ cat ./.ssh/id_rsa.pub | ssh mc@remotehost 'cat >> .ssh/authorized_keys'; |
นอกจากนี้ หากคุณทำเช่นนี้บ่อยครั้งกับหลายโฮสต์ คุณสามารถใช้สคริปต์ขนาดเล็กหรือฟังก์ชันเชลล์เพื่อดำเนินการขั้นตอนที่จำเป็นทั้งหมด ดังที่แสดงในรายการ 15
OLDDIR='pwd'; ถ้า [ -z "$1" ]; echo ต้องการข้อมูลผู้ใช้ @ โฮสต์; ออก; ฟี; ซีดี$บ้าน; ถ้า [ -e "./.ssh/id_rsa.pub" ]; cat ./.ssh/id_rsa.pub | ssh $1 'cat >> .ssh/authorized_keys'; อื่น ssh-keygen -trsa; cat ./.ssh/id_rsa.pub | ssh $1 'cat >> .ssh/authorized_keys'; ฟี; ซีดี $OLDDIR |
คุณสามารถใช้สคริปต์ setremotekey เพื่อคัดลอกคีย์ที่มีอยู่ หรือหากไม่มีคีย์ ให้สร้างขึ้นก่อนคัดลอก:
$ setremotekey mc@remotehost |
ในตอนนี้ เมื่อใดก็ตามที่คุณต้องการเข้าสู่ระบบโฮสต์ระยะไกลโดยใช้คีย์สาธารณะ คุณสามารถใช้สคริปต์คีย์ส่วนบุคคลร่วมกับรายการคีย์ที่ผู้ใช้รายนั้นยอมรับบนโฮสต์ระยะไกลได้
สรุป
OpenSSH เป็นเครื่องมือสำคัญที่รักษาความปลอดภัยการสื่อสารและการถ่ายโอนข้อมูลระหว่างคอมพิวเตอร์ ไม่เพียงเป็นทางเลือกที่ปลอดภัยกว่าเครื่องมือทั่วไป เช่น Telnet, FTP และ RCP เท่านั้น แต่ยังสามารถใช้เป็นโปรโตคอลการรับส่งข้อมูลสำหรับบริการอื่นๆ เช่น Subversion, X Windows System และ rsync ได้อีกด้วย บทความนี้จะแสดงขั้นตอนพื้นฐานที่จำเป็นในการเปิดใช้งาน OpenSSH วิธีใช้เครื่องมือหลักที่ OpenSSH ให้มาให้เกิดประโยชน์สูงสุด และวิธีใช้เครื่องมือแลกเปลี่ยนคีย์เพื่อทำให้ปัญหาการเข้าสู่ระบบและการเชื่อมต่อง่ายขึ้น