เป็นไปได้หรือไม่ที่จะใช้ OpenSSH เพื่อส่งต่อไปยังอุปกรณ์ที่เปิดใช้งาน SSH อื่น ๆ เช่นสวิตช์เราเตอร์เป็นต้นหากเป็นสิ่งที่สามารถทำได้โดยไม่ต้องสร้างแอปพลิเคชัน bespoke บน Linux ให้ทำหรือไม่
ขอบคุณ
เป็นไปได้หรือไม่ที่จะใช้ OpenSSH เพื่อส่งต่อไปยังอุปกรณ์ที่เปิดใช้งาน SSH อื่น ๆ เช่นสวิตช์เราเตอร์เป็นต้นหากเป็นสิ่งที่สามารถทำได้โดยไม่ต้องสร้างแอปพลิเคชัน bespoke บน Linux ให้ทำหรือไม่
ขอบคุณ
คำตอบ:
แน่นอนว่า; เพียงแค่ใช้การส่งต่อพอร์ต / ช่องสัญญาณ SSH เริ่มการเชื่อมต่อ ssh กับเครื่อง "พร็อกซี" โดยใช้คำสั่งต่อไปนี้:
ssh -L$LOCALPORT:$REMOTEHOST:$SSHPORT $PROXYHOST
$PROXYHOST
: เครื่องที่คุณสามารถเข้าถึง SSH ได้$REMOTEHOST
: เครื่องที่ $ PROXYHOST สามารถเชื่อมต่อได้ แต่คุณทำไม่ได้ ใช้ชื่อโฮสต์หรือ IP ที่$PROXYHOST
สามารถใช้เพื่ออ้างถึงเครื่อง$SSHPORT
: พอร์ตที่ sshd กำลังฟังบน remotehost; มีโอกาสมากที่สุด 22$LOCALPORT
: พอร์ตขาออกในเครื่อง SSH กำลังเปิดขึ้นบนเครื่องโลคัลของคุณและส่งต่อไปยังพอร์ต 22 $REMOTEHOST
ปล่อยให้การเชื่อมต่อนั้นขึ้นเพื่อให้อุโมงค์ทำงานได้ คุณอาจต้องการเพิ่มลง-N
ในคำสั่งเพื่อให้การเชื่อมต่อนี้ไม่ทำให้เกิดเชลล์ระยะไกลและคุณจะไม่ปิดโดยไม่ตั้งใจในภายหลัง
เมื่อสร้างอุโมงค์แล้วให้ทำดังนี้:
ssh -p $LOCALPORT localhost
การดำเนินการนี้จะพยายามเชื่อมต่อ SSH กับเครื่องท้องถิ่นของคุณบนพอร์ตที่ส่งต่อไปยัง$REMOTEHOST
พอร์ต SSH ของ
หากคุณมีความยินดีที่จะปรับปรุงการกำหนดค่าบนไคลเอนต์ของคุณคุณสามารถติดตั้งโปรแกรมของคุณให้ใช้กล่องประตูของคุณเป็นพร็อกซี่ กล่องรีเลย์ของคุณจะต้องติดตั้ง netcat และเพื่อผลลัพธ์ที่ดีที่สุดคุณจะต้องมีการตั้งค่าการรับรองความถูกต้องด้วยคีย์
นี่คือสิ่งที่ฉันใช้ใน. ssh / config เพื่อเชื่อมต่อผ่านโฮสต์อื่น
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host "/bin/netcat -w 1 internal-ssh-host 22"
ด้วยวิธีการข้างต้นคุณสามารถเรียกใช้คำสั่งssh internal-ssh-host-proxyจากเครื่องไคลเอ็นต์ของคุณ
หากโฮสต์ SSH พร็อกซีมีไคลเอนต์ OpenSSH 5.4 ขึ้นไปคุณไม่จำเป็นต้องใช้ netcat และคุณสามารถใช้โหมด netcat ในตัวแทน
Host internal-ssh-host-proxy
ProxyCommand /usr/bin/ssh username@ssh-relay-host -W internal-ssh-host:22
จากคำตอบที่นำเสนอ Zordache เป็นทางออกโดยรวมที่ดีที่สุด อย่างไรก็ตามสำหรับรุ่นหลังหากคุณต้องการเชื่อมต่อแบบเฉพาะกิจโดยไม่ต้องแก้ไขการตั้งค่าของคุณให้ใช้-t
แฟล็กเพื่อจัดสรรเทอร์มินัลเทียมพร้อมกับดำเนินการ ssh โดยตรงบนรีเลย์
ssh -t relay.example.com ssh internal.example.com
คุณสามารถส่งต่อการเชื่อมต่อโดยอัตโนมัติโดยใช้ OpenSSH ใน~/.ssh/authorized_keys
ไฟล์ของคุณคุณสามารถระบุคำสั่งเพื่อดำเนินการซึ่งอาจเป็น SSH ไปยังเครื่องที่สอง
[ssh client] ----> [ssh relay server] ----> [ssh target server]
you modified authorized_keys target machine
สิ่งที่คุณจะเห็นเมื่อได้รับแจ้งคือสองข้อความPassword:
: หนึ่งรายการสำหรับเซิร์ฟเวอร์ส่งต่อและอีกหนึ่งรายการสำหรับเซิร์ฟเวอร์เป้าหมาย คุณสามารถลบพฤติกรรมนี้ได้ตลอดเวลาโดยใช้ใบรับรอง