SSH เป็นโปรโตคอลเครือข่ายที่ปลอดภัยในการเข้าถึงคอมพิวเตอร์ระยะไกลในเครือข่าย
คอมพิวเตอร์สื่อสารกันผ่านเครือข่าย ดังนั้น นักวิจัยเครือข่ายจึงกำหนดชุดกฎสำหรับการสื่อสารกับเครื่องอื่นและเริ่มพัฒนาโปรโตคอลเช่น Telnet; ผู้ใช้คนหนึ่งสามารถควบคุมคอมพิวเตอร์เครื่องอื่นได้
แต่ก็ไม่ปลอดภัย กล่าวคือ ใครก็ตามที่อยู่ตรงกลางเครือข่ายสามารถสกัดกั้นและอ่านข้อมูลที่กำลังถ่ายโอนได้ ในช่วงกลางทศวรรษที่ 90 ได้มีการแนะนำโปรโตคอลที่ปลอดภัยกว่าชื่อ ssh ในฐานะตัวตายตัวแทนของโปรโตคอล telnet ที่เชื่อถือได้
หากคุณเป็นนักพัฒนาซอฟต์แวร์หรือผู้ดูแลระบบที่ทำงานในอุตสาหกรรม คุณอาจเคยใช้ ssh อย่างน้อยหนึ่งครั้ง หากคุณยังไม่มี มาเรียนรู้กันตอนนี้ เนื่องจากเป็นหนึ่งในทักษะที่จำเป็นที่ต้องรู้
SSH คืออะไร?
SSH หรือ Secure Shell หรือ Secure Socket Shell เป็นโปรโตคอลเครือข่ายที่ช่วยให้เราเข้าถึงและสื่อสารกับเครื่องระยะไกลได้อย่างปลอดภัย (ส่วนใหญ่เป็นเซิร์ฟเวอร์ระยะไกล)
มีการเข้ารหัสที่แข็งแกร่งและใช้กันอย่างแพร่หลายโดยผู้ดูแลระบบเครือข่ายและนักพัฒนาเพื่อจัดการระบบระยะไกลและแอปพลิเคชัน รันคำสั่ง แชร์ไฟล์ ฯลฯ
ต้องการของ SSH
SSH ถูกสร้างขึ้นในปี 1995 เพื่อแก้ปัญหาด้านความปลอดภัยที่ต้องเผชิญกับโปรโตคอลการเข้าถึงระยะไกลที่ไม่ปลอดภัยเช่น เข้าสู่ระบบ, rsh, เทลเน็ต.
ทีนี้มาพูดถึง Telnet ซึ่งย่อมาจาก Teletype Network ที่พัฒนาขึ้นในปี 1969 เป็นเครื่องมือบรรทัดคำสั่งง่ายๆ ที่ทำงานบนคอมพิวเตอร์ของคุณเพื่อเข้าถึงเซิร์ฟเวอร์ระยะไกล (ทุกที่ในโลก) และส่งคำสั่งให้ดำเนินการบนเซิร์ฟเวอร์นั้น เหมือนกับว่าคุณนั่งอยู่หน้าเซิร์ฟเวอร์ระยะไกล (แม้จะอยู่ห่างจากเซิร์ฟเวอร์หลายไมล์ก็ตาม) Telnet ส่งและรับข้อความเป็นข้อความธรรมดาผ่านเครือข่าย
คำสั่งที่คุณใช้อาจเป็นการรันโปรแกรม สร้างไดเร็กทอรี สร้าง/ลบ/ถ่ายโอนไฟล์ เริ่ม/หยุดบริการ เป็นต้น
ปัญหาในการเชื่อมต่อเครื่องอื่นในเครือข่ายคือข้อมูลที่ส่งจะผ่านหลายเครือข่าย ในระหว่างนี้ บางส่วนอาจไม่ปลอดภัย และข้อมูลที่ส่งอาจถูกสกัดกั้น และอาจถูกแก้ไขก่อนที่จะไปถึงเครื่องเป้าหมายที่ต้องการ
ในยุคแรก ๆ ที่การรักษาความปลอดภัยไม่มีความสำคัญมากนัก การสื่อสารทั้งหมดจะเป็นข้อความธรรมดา ดังนั้นข้อมูลที่ส่งผ่านอินเทอร์เน็ตระหว่างไคลเอนต์และเซิร์ฟเวอร์จึงสามารถดักจับได้ง่าย และสามารถอ่านได้เนื่องจากข้อความไม่ได้เข้ารหัส
ดังนั้นโปรโตคอลข้อความธรรมดาจึงไม่ปลอดภัยอย่างยิ่งและไม่เคยถูกใช้สำหรับการส่งข้อมูลที่ละเอียดอ่อน เช่น รหัสผ่าน ความลับ ฯลฯ ดังนั้น SSH จึงได้รับการพิจารณาว่าเป็นทางเลือกที่ปลอดภัยแทนโปรโตคอลเครือข่ายการเข้าถึงระยะไกลแบบเดิม
มันทำงานอย่างไร?
SSH ใช้สถาปัตยกรรมแบบไคลเอนต์เซิร์ฟเวอร์สำหรับการสื่อสารที่ปลอดภัยผ่านเครือข่ายโดยการเชื่อมต่อไคลเอนต์ ssh กับเซิร์ฟเวอร์ ssh ตามค่าเริ่มต้น เซิร์ฟเวอร์ ssh จะฟังพอร์ต TCP มาตรฐาน 22 (คุณสามารถเปลี่ยนได้เพื่อความปลอดภัยที่ดีขึ้น)
ใช้เทคนิคการเข้ารหัสคีย์สาธารณะเพื่อตรวจสอบความถูกต้องระหว่างไคลเอ็นต์และเซิร์ฟเวอร์ นอกจากนี้ โปรโตคอลยังใช้การเข้ารหัสแบบสมมาตรที่แข็งแกร่งและอัลกอริธึมการแฮชสำหรับการแลกเปลี่ยนข้อความระหว่างไคลเอนต์และเซิร์ฟเวอร์เพื่อให้มั่นใจถึงความเป็นส่วนตัวและความสมบูรณ์ของข้อมูล
Linux เป็นระบบปฏิบัติการที่ใช้กันอย่างแพร่หลายสำหรับเซิร์ฟเวอร์ระยะไกลเนื่องจากความปลอดภัยและความทนทาน เซิร์ฟเวอร์จำนวนมากที่ใช้ระบบปฏิบัติการลีนุกซ์บนอินเทอร์เน็ตทำงานมาหลายปีโดยที่ไม่มีการล้มเหลวหรือแม้แต่การรีสตาร์ท
เซสชัน SSH ส่วนใหญ่ (ระยะเวลาที่เราเข้าถึงเซิร์ฟเวอร์ระยะไกล) จะมีเพียงสองการดำเนินการต่อไปนี้:
- การรับรองความถูกต้อง
- การดำเนินการคำสั่ง
เซิร์ฟเวอร์ SSH สามารถตรวจสอบสิทธิ์ไคลเอนต์โดยใช้วิธีการต่างๆ
และสองวิธีที่เป็นที่นิยมคือ:
การรับรองความถูกต้องโดยใช้รหัสผ่านเป็นวิธีการเริ่มต้นที่ใช้สำหรับการรับรองความถูกต้องสำหรับ OpenSSH ลูกค้าที่ติดตั้ง เป็นการพิสูจน์ตัวตนแบบ ssh ขั้นพื้นฐานที่สุด แต่ไม่ใช่แบบที่ปลอดภัยที่สุด
แม้ว่ารหัสผ่านจะถูกส่งไปยังเซิร์ฟเวอร์อย่างปลอดภัย แต่การโจมตีด้วยกำลังดุร้ายสมัยใหม่อาจข้ามการตรวจสอบสิทธิ์
การตรวจสอบสิทธิ์โดยใช้คีย์ช่วยปรับปรุงความปลอดภัยของระบบให้ดียิ่งขึ้นโดยการสร้างคู่คีย์ SSH ซึ่งพิสูจน์ได้ว่าเป็นทางเลือกที่เชื่อถือได้และปลอดภัย
หลังจากที่เซิร์ฟเวอร์รับรองความถูกต้องของไคลเอนต์เรียบร้อยแล้ว การเชื่อมต่อที่ปลอดภัยจะถูกสร้างขึ้นระหว่างกัน
การเข้าถึงเซิร์ฟเวอร์ระยะไกลโดยใช้ SSH
หากคุณเป็นผู้ใช้ Mac/Linux คุณสามารถใช้เทอร์มินัลเพื่อพิมพ์และเรียกใช้คำสั่ง ssh ได้โดยตรง เนื่องจาก OpenSSH ได้รับการติดตั้งเป็นค่าเริ่มต้นแล้ว
หากคุณเป็นผู้ใช้ Windows คุณต้องติดตั้งไคลเอ็นต์โปรแกรมจำลองเทอร์มินัลบุคคลที่สามเพื่อเรียกใช้คำสั่ง ssh ผงสำหรับอุดรู เป็นไคลเอนต์ ssh ที่ได้รับความนิยมสูงสุดสำหรับระบบปฏิบัติการ Windows
ในการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลโดยใช้ SSH คุณต้องรู้อย่างน้อยสองสิ่ง
ไวยากรณ์สำหรับคำสั่ง ssh พื้นฐานคือ:
$ ssh <user-name> @ <host> -p <port-no>
ชื่อผู้ใช้คือชื่อผู้ใช้ของเครื่องระยะไกลที่เรากำลังพยายามเชื่อมต่อ (ไม่ใช่ผู้ใช้ในเครื่องของคุณ) และโฮสต์เป็นที่อยู่ IP หรือชื่อโดเมน
มาดูตัวอย่างการเชื่อมต่อกับเซิร์ฟเวอร์ระยะไกลโดยใช้ โอเวอร์เดอะไวร์ เว็บไซต์. มันเป็นเว็บไซต์ท้าทาย wargame ฟรี
ตอนนี้เรามาเชื่อมต่อกับ โจร ท้าทายโดยใช้ ssh เป็นหนึ่งในความท้าทายที่มีอยู่บนเว็บไซต์ที่สอนวิธีเข้าสู่ระบบโดยใช้ SSH
ข้อมูลประจำตัว:
ชื่อผู้ใช้และรหัสผ่าน: bandit0
โฮสต์ & พอร์ต: bandit.labs.overthewire.org, 2220
เมื่อคุณพิมพ์คำสั่งต่อไปนี้แล้วกด Enter:
$ ssh [email protected] -p 2220
ระบบจะแจ้งให้คุณป้อนรหัสผ่านเพื่อวัตถุประสงค์ในการตรวจสอบสิทธิ์ ตอนนี้พิมพ์รหัสผ่านแล้วกด Enter:
หากพิมพ์รหัสผ่านถูกต้อง แสดงว่าคุณลงชื่อเข้าใช้เซิร์ฟเวอร์ระยะไกลได้สำเร็จ และเทอร์มินัลของคุณจะมีลักษณะเหมือนภาพด้านบน
ตอนนี้คุณสามารถใช้เทอร์มินัลของเครื่องระยะไกลเพื่อพิมพ์และดำเนินการคำสั่งของคุณและดำเนินการที่จำเป็น
เมื่อต้องการสิ้นสุดเซสชัน ssh ให้พิมพ์คำสั่ง exit:
$ exit
คุณจะได้รับข้อความ “การเชื่อมต่อถูกปิด” เมื่อคุณออกจากระบบเซสชัน ssh สำเร็จ
บทสรุป
เหตุผลหลักที่อยู่เบื้องหลังความนิยมของ SSH คือการสื่อสารทั้งหมดระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ได้รับการเข้ารหัส
คนส่วนใหญ่คิดว่าการใช้ ssh นั้นซับซ้อน และการได้รับความรู้เกี่ยวกับวิธีการทำงานนั้นไม่สามารถเข้าใจได้ง่ายๆ แต่มันง่ายกว่าที่คุณคิด ตอนนี้ คุณมีความเข้าใจพื้นฐานของ SSH, วิธีการทำงาน, แง่มุมด้านความปลอดภัยที่อยู่เบื้องหลัง และเหตุใด SSH จึงมีบทบาทสำคัญในการสื่อสาร
ต่อไป สำรวจแหล่งข้อมูลบางส่วนเพื่อเป็น Sysadmin