ค้นหาเว็บไซต์

วิธีการตั้งค่าเซิร์ฟเวอร์ SSH Jump ใน Linux


โฮสต์ข้าม (หรือที่เรียกว่า เซิร์ฟเวอร์ข้าม) คือโฮสต์ตัวกลางหรือเกตเวย์ SSH ไปยังเครือข่ายระยะไกล ซึ่งสามารถเชื่อมต่อกับโฮสต์อื่นใน โซนความปลอดภัยที่แตกต่างกัน เช่น โซนปลอดทหาร (DMZ) มันเชื่อมโยงโซนความปลอดภัยสองโซนที่แตกต่างกันและให้การควบคุมการเข้าถึงระหว่างโซนเหล่านั้น

โฮสต์กระโดดควรมีความปลอดภัยสูงและตรวจสอบโดยเฉพาะอย่างยิ่งเมื่อขยายเครือข่ายส่วนตัวและ DMZ พร้อมเซิร์ฟเวอร์ที่ให้บริการแก่ผู้ใช้บนอินเทอร์เน็ต

สถานการณ์แบบคลาสสิกคือการเชื่อมต่อจากเดสก์ท็อปหรือแล็ปท็อปของคุณจากภายในเครือข่ายภายในของบริษัทของคุณ ซึ่งมีความปลอดภัยสูงด้วยไฟร์วอลล์ไปยัง DMZ เพื่อให้จัดการเซิร์ฟเวอร์ใน DMZ ได้อย่างง่ายดาย คุณสามารถเข้าถึงได้ผ่าน โฮสต์ข้าม

โดยสรุป เซิร์ฟเวอร์ SSH Jump คือเซิร์ฟเวอร์ Linux ที่ใช้เป็นเกตเวย์ไปยังเซิร์ฟเวอร์ Linux อื่นๆ บนเครือข่ายส่วนตัวผ่านโปรโตคอล SSH

ในบทความนี้ เราจะสาธิตวิธีเข้าถึงเซิร์ฟเวอร์ Linux ระยะไกลผ่าน โฮสต์ข้าม และเราจะกำหนดการตั้งค่าที่จำเป็นในการกำหนดค่าไคลเอนต์ SSH ต่อผู้ใช้ของคุณ

การตั้งค่าเซิร์ฟเวอร์ SSH Jump

พิจารณาสถานการณ์ต่อไปนี้

เพื่อความชัดเจนยิ่งขึ้น ด้านล่างนี้คือการตั้งค่าง่ายๆ ที่สาธิตบทบาทของเซิร์ฟเวอร์ SSH Jump

เหตุผลในการกำหนดค่าเซิร์ฟเวอร์ SSH Jump

เซิร์ฟเวอร์ Jump มอบประตูสู่โครงสร้างพื้นฐานของคุณและลดการโจมตีที่อาจเกิดขึ้นกับทรัพยากรของคุณ นอกจากนี้ยังให้การจัดการอุปกรณ์ที่โปร่งใสตลอดจนจุดเข้าถึงทรัพยากรของคุณเพียงจุดเดียว

โปรดทราบว่าเมื่อคุณรวม Jump Server เข้ากับโครงสร้างพื้นฐานของคุณ ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์นั้นแข็งแกร่งขึ้น ไม่เช่นนั้นจะดีเท่ากับไม่ได้ใช้งาน เราจะกลับมาที่เรื่องนี้ในภายหลังในบทช่วยสอนนี้

วิธีสร้างเซิร์ฟเวอร์ SSH Jump อย่างง่าย

ตอนนี้เรามาดูกันว่าคุณสามารถสร้างเซิร์ฟเวอร์ SSH Jump แบบง่ายๆ ได้อย่างไร นี่คือการตั้งค่าง่ายๆ ของเรา

  • IP เริ่มต้น: 105.68.76.85
  • Jump Server IP (เราจะเรียกสิ่งนี้ว่าโฮสต์-จัมพ์): 173.82.232.55
  • IP ปลายทาง (เราจะเรียกสิ่งนี้ว่า host_destination): 173.82.227.89

ในสถานการณ์ข้างต้น คุณต้องการเชื่อมต่อกับ HOST 2 (173.82.227.89) แต่คุณต้องผ่าน HOST 1 (173.82.232.55) เนื่องจากไฟร์วอลล์ การกำหนดเส้นทางและสิทธิ์การเข้าถึง มีสาเหตุที่ถูกต้องหลายประการว่าทำไมจึงต้องมีจัมเปอร์โฮสต์

รายการ Jumphost แบบไดนามิก

วิธีที่ง่ายที่สุดในการเชื่อมต่อกับเซิร์ฟเวอร์เป้าหมายผ่าน โฮสต์ข้าม คือการใช้แฟล็ก -A และ -J จากบรรทัดคำสั่ง ซึ่งจะเป็นการบอกให้ ssh ทำการเชื่อมต่อกับ Jump Host จากนั้นสร้างการส่งต่อ TCP ไปยังเซิร์ฟเวอร์เป้าหมาย จากนั้น (ตรวจสอบให้แน่ใจว่าคุณได้เข้าสู่ระบบ SSH แบบไร้รหัสผ่านระหว่างเครื่องต่างๆ)

ssh -A -J user@jump-server  user@destination server

ตัวอย่างเช่น ในการตั้งค่าของเรา เรามีผู้ใช้ชื่อ james กำหนดค่าบน Jump Server และ tecmint กำหนดค่าบนปลายทางหรือระบบเป้าหมาย

คำสั่งจะมีลักษณะดังนี้จาก IP ต้นทาง

ssh -A -J [email  [email 

คำสั่งจะแจ้งให้คุณใส่รหัสผ่านผู้ใช้ของจัมเปอร์เซิร์ฟเวอร์ ตามด้วยรหัสผ่านของระบบเป้าหมายซึ่งคุณจะได้รับสิทธิ์ในการเข้าถึงระบบเป้าหมาย

หาก ชื่อผู้ใช้ หรือ พอร์ต บนเครื่องแตกต่างกัน ให้ระบุบนเทอร์มินัลตามที่แสดง

ssh -J username@host1:port username@host2:port	  

รายการ Jumphosts หลายรายการ

ไวยากรณ์เดียวกันสามารถใช้เพื่อข้ามเซิร์ฟเวอร์หลายเครื่องได้

ssh -J username@host1:port,username@host2:port username@host3:port

รายการ Jumphost แบบคงที่

รายการ Jumphost แบบคงที่หมายความว่าคุณทราบ jumphost หรือ jumphosts ที่คุณต้องการเชื่อมต่อเครื่อง ดังนั้น คุณต้องเพิ่ม 'การกำหนดเส้นทาง' Jumphost แบบคงที่ต่อไปนี้ในไฟล์ ~/.ssh/config และระบุนามแฝงของโฮสต์ตามที่แสดง

### First jumphost. Directly reachable
Host vps1
  HostName vps1.example.org

### Host to jump to via jumphost1.example.org
Host contabo
  HostName contabo.example.org
  ProxyJump vps1

ตอนนี้ให้ลองเชื่อมต่อกับเซิร์ฟเวอร์เป้าหมายผ่าน โฮสต์ข้าม ดังที่แสดง

ssh -J vps1 contabo

วิธีที่สองคือการใช้ตัวเลือก ProxyCommand เพื่อเพิ่มการกำหนดค่า jumphost ใน ~.ssh/config หรือ $HOME/ ssh/config ดังที่แสดง

ในตัวอย่างนี้ โฮสต์เป้าหมายคือ contabo และ jumphost คือ vps1

Host vps1
	HostName vps1.example.org
	IdentityFile ~/.ssh/vps1.pem
	User ec2-user

Host contabo
	HostName contabo.example.org	
	IdentityFile ~/.ssh/contabovps
	Port 22
	User admin	
	Proxy Command ssh -q -W %h:%p vps1

บันทึกการเปลี่ยนแปลงและออกจากไฟล์ หากต้องการใช้การเปลี่ยนแปลง ให้รีสตาร์ท SSH daemon

sudo systemctl restart ssh

มาสำรวจตัวเลือกที่ใช้ในไฟล์กำหนดค่ากัน:

  • -q – หมายถึงโหมดเงียบ มันระงับคำเตือนและข้อความวินิจฉัย
  • -W – ขอให้ส่งต่ออินพุตและเอาท์พุตมาตรฐานบนไคลเอนต์ไปยัง HOST บน PORT ผ่านช่องทางที่ปลอดภัย
  • %h – ระบุโฮสต์ที่จะเชื่อมต่อ
  • %p – ระบุพอร์ตที่จะเชื่อมต่อบนโฮสต์ระยะไกล

หากต้องการ 'ข้าม' ไปยังระบบปลายทางจาก IP ต้นทางของคุณผ่าน Jump Server เพียงเรียกใช้คำสั่งต่อไปนี้:

ssh contabo

คำสั่งข้างต้นจะเปิดการเชื่อมต่อ ssh ไปที่ vps1 ในพื้นหลังที่ได้รับผลกระทบจาก ProxyCommand ก่อน จากนั้นให้เริ่มเซสชัน ssh ไปยังเซิร์ฟเวอร์เป้าหมาย contabo แข็งแกร่ง>.

ทำให้เซิร์ฟเวอร์ SSH Jump ปลอดภัยยิ่งขึ้น

วิธีหนึ่งในการทำให้การตั้งค่านี้ปลอดภัยยิ่งขึ้นคือการคัดลอกคีย์ SSH สาธารณะจากระบบต้นทางไปยัง เซิร์ฟเวอร์ข้าม จากนั้นจึงคัดลอกไปยังระบบเป้าหมาย จากนั้นจึงปิดใช้งานการตรวจสอบสิทธิ์ด้วยรหัสผ่าน ดูคำแนะนำของเราเกี่ยวกับวิธีเปิดใช้งานการตรวจสอบสิทธิ์แบบไม่ใช้รหัสผ่าน SSH

นอกจากนี้ โปรดดูเคล็ดลับการทำให้เซิร์ฟเวอร์ SSH แข็งแกร่งขึ้น

นอกจากนี้ ตรวจสอบให้แน่ใจว่าไม่มีข้อมูลที่ละเอียดอ่อนเก็บไว้ภายในเซิร์ฟเวอร์ Jump เนื่องจากอาจนำไปสู่การรั่วไหลของข้อมูลรับรองการเข้าถึง เช่น ชื่อผู้ใช้และรหัสผ่าน ที่นำไปสู่การละเมิดทั้งระบบ

สำหรับข้อมูลเพิ่มเติม โปรดดูหน้า ssh man หรืออ้างอิงถึง: OpenSSH/Cookbxook/Proxies และ Jump Hosts

นั่นคือทั้งหมดที่สำหรับตอนนี้! ในบทความนี้ เราได้สาธิตวิธีเข้าถึงเซิร์ฟเวอร์ระยะไกลผ่านโฮสต์แบบข้าม ใช้แบบฟอร์มคำติชมด้านล่างเพื่อถามคำถามหรือแบ่งปันความคิดของคุณกับเรา