CH-J Server Managerการจัดการเซิร์ฟเวอร์ผ่าน SSH
เมนู
คู่มือและบทความทั้งหมด →

วิธีเชื่อมต่อผ่าน SSH jump host (bastion)

เข้าถึงเซิร์ฟเวอร์ภายในผ่าน jump host หนึ่งเครื่องหรือหลายเครื่อง ตรวจสอบคีย์โฮสต์ทุกเครื่อง และหลีกเลี่ยงการส่งต่อเอเจนต์

หน้าที่ของ jump host

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

เชื่อมต่อจากบรรทัดคำสั่ง

ตัวเลือก -J ใช้ระบุ jump host หากมีหลายจุดแวะ ให้คั่นด้วยเครื่องหมายจุลภาค โดยจะใช้งานตามลำดับที่ระบุ หากใช้เส้นทางเดิมเป็นประจำ ให้เพิ่มการตั้งค่าใน ~/.ssh/config เพื่อให้เรียกใช้ด้วยชื่อแทนสั้น ๆ ได้

ssh -J admin@bastion.example admin@app.internal
ssh -J admin@bastion.example,ops@hop2.example admin@app.internal

# ~/.ssh/config
Host app-internal
    HostName app.internal
    User admin
    ProxyJump admin@bastion.example

ตรวจสอบคีย์โฮสต์ทุกเครื่อง

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

ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256

เลือกใช้ ProxyJump แทนการส่งต่อเอเจนต์

การส่งต่อเอเจนต์ (ssh -A) ทำให้ผู้ที่มีสิทธิ์เพียงพอบน bastion ใช้คีย์ที่คุณโหลดไว้ได้ขณะที่คุณเชื่อมต่ออยู่ ProxyJump ไม่จำเป็นต้องใช้การส่งต่อเอเจนต์ เพราะการยืนยันตัวตนกับเครื่องเป้าหมายทำจากคอมพิวเตอร์ของคุณเอง นอกจากนี้ ควรหลีกเลี่ยงการเก็บคีย์ส่วนตัวบน bastion และจำกัดผู้ที่สามารถล็อกอินเข้าเครื่องนั้น

ปัญหาที่พบบ่อย

เริ่มจากระบุว่าจุดแวะใดล้มเหลว โดยเชื่อมต่อไปยัง bastion เพียงเครื่องเดียว แล้วเรียกใช้ ssh -vvv พร้อม -J เพื่อดูว่าการเชื่อมต่อหยุดที่ใด หาก bastion ใช้งานได้แต่เครื่องเป้าหมายไม่ได้ สาเหตุมักเป็นไฟร์วอลล์ระหว่างสองเครื่อง ชื่อภายในที่ผิด หรือเครื่องเป้าหมายไม่ยอมรับคีย์ของคุณ เซิร์ฟเวอร์ที่ตั้งค่า AllowTcpForwarding no จะปฏิเสธการทำหน้าที่เป็น jump host

jump host ใน CH-J Server Manager

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

เอกสารโดยละเอียด

OpenSSH: ssh (-J) →

OpenSSH: ssh_config (ProxyJump) →

การปลดล็อกด้วยไบโอเมตริกและความปลอดภัย →