ใช่ใช้ProxyCommand
ในการกำหนดค่า SSH ของคุณ
สร้างไฟล์การกำหนดค่า SSH ในโฮมไดเร็กตอรี่ของคุณ (ยกเว้นว่าคุณต้องการสร้างทั้งระบบนี้) ~/.ssh/config
:
Host unibroker # Machine B definition (the broker)
Hostname 12.34.45.56 # Change this IP address to the address of the broker
User myusername # Change this default user accordingly
# (`user@unibroker` can overwrite it)
Host internalmachine # Machine A definition (the target host)
ProxyCommand ssh -q unibroker nc -q0 hostname.or.IP.address.internal.machine 22
ตอนนี้คุณสามารถเข้าถึง Machine A ได้โดยตรงโดยใช้
ssh user@internalmachine
โปรดทราบว่าในตอนนี้คุณมีชื่อโฮสต์โฮสต์ SSH เดียวคุณสามารถใช้ชื่อนี้ในแอปพลิเคชันอื่นเช่นกัน เช่น:
SCP เพื่อคัดลอกไฟล์
scp somefile user@internalmachine:~/
ในแอปพลิเคชัน GUI ของคุณ:
ใช้sftp://user@internalmachine/
เป็นที่ตั้งเพื่อเรียกดูบนเครื่อง
ใช้ KDE (โลมา): ใช้ fish://user@internalmachine/
หมายเหตุ
เปลี่ยนhostname.or.IP.address.internal.machine
และพอร์ต ( 22
) เป็นเครื่องที่คุณต้องการเข้าถึงราวกับว่าคุณต้องการจากunibroker
เครื่อง
ทั้งนี้ขึ้นอยู่กับรุ่น netcat บนโฮสต์ unibroker -q0
ตัวเลือกต้องถูกละเว้น เกี่ยวกับการรับรองความถูกต้อง; โดยทั่วไปคุณตั้งค่าการเชื่อมต่อ SSH สองรายการจากเวิร์กสเตชัน ซึ่งหมายความว่าทั้งโฮสต์ unibroker และ hostmachine ภายในจะได้รับการตรวจสอบ / รับรองความถูกต้องต่อกัน (สำหรับ keypair / รหัสผ่านและการตรวจสอบคีย์โฮสต์)
คำอธิบาย
วิธีการใช้งานProxyCommand
และ 'netcat' นี้เป็นเพียงวิธีหนึ่งในการทำเช่นนั้น ฉันชอบสิ่งนี้เพราะลูกค้า SSH ของฉันพูดโดยตรงกับเครื่องเป้าหมายเพื่อให้ฉันสามารถตรวจสอบรหัสโฮสต์จากลูกค้าของฉันและฉันสามารถใช้การตรวจสอบกุญแจสาธารณะของฉันโดยไม่ต้องใช้คีย์อื่นในนายหน้า
แต่ละHost
กำหนดการเริ่มต้นของส่วนโฮสต์ใหม่ Hostname
เป็นชื่อโฮสต์เป้าหมายหรือที่อยู่ IP ของโฮสต์นั้น คือสิ่งที่คุณจะให้เป็นส่วนหนึ่งของผู้ใช้ในUser
ssh user@hostname
ProxyCommand
จะถูกใช้เป็นท่อไปยังเครื่องเป้าหมาย ด้วยการใช้ SSH ไปยังเครื่องแรกและตั้งค่า 'netcat' ( nc
) ไปยังเป้าหมายโดยตรงจากตรงนั้นนี่เป็นเพียงข้อความธรรมดาที่ส่งต่อไปยังเครื่องภายในจากนายหน้าระหว่างนั้น -q
ตัวเลือกที่จะเงียบผลใด ๆ (เพียงความชอบส่วนบุคคล)
ให้แน่ใจว่าคุณได้ติดตั้ง netcat บนนายหน้า (มักจะใช้ได้โดยเริ่มต้นบน Ubuntu) - ทั้งnetcat-OpenBSDหรือnetcat แบบดั้งเดิม
โปรดทราบว่าคุณยังคงใช้ SSH พร้อมการเข้ารหัสสองครั้งที่นี่ ในขณะที่ช่อง netcat เป็นข้อความธรรมดาไคลเอ็นต์ SSH ของคุณบนพีซีของคุณจะตั้งค่าแชนเนลที่เข้ารหัสอีกเครื่องด้วยเครื่องเป้าหมายขั้นสุดท้าย