SSH tunnel ผ่านเซิร์ฟเวอร์ middleman - วิธีเชื่อมต่อในขั้นตอนเดียว (ใช้คู่ที่สำคัญ)


9

คำถามของฉันเป็นวิธีการเปลี่ยนสองขั้นตอนที่มีอยู่เป็นขั้นตอนเดียว

ฉันมีอุโมงค์ SSH ที่ใช้งานได้ตั้งค่าระหว่างคอมพิวเตอร์สองเครื่องโดยใช้เซิร์ฟเวอร์พ่อค้าคนกลางเช่นนี้:

Kubuntu_laptop--->nat_fw--->Debian_Server<--nat_fw<--Kubuntu_desktop

สิ่งที่ฉันทำในปัจจุบันคือ SSH จาก Kubuntu_laptop ไปยัง Debian_Server และจาก Debian_Server ถึง Kubuntu_desktop ฉันต้องการทำให้คำสั่ง SSH หนึ่งคำสั่งเผยแพร่บน Kubuntu_laptop ของฉันใน bash ซึ่งส่งผลให้ฉันเชื่อมต่อกับ Kubuntu_desktop (เชลล์ / bash)

คำสั่งที่ฉันใช้ตอนนี้มีดังนี้ ขั้นตอนที่ 1:

me@kubuntu_laptop:~$ ssh -i ~/.ssh/id_rsa admin@debian_server  

ขั้นตอนที่ 2:

admin@debian_server:$ ssh -p 1234 -i /home/admin/.ssh/id_rsa admin@localhost 

จากนั้นฉันก็เชื่อมต่อกับ kubuntu_desktop ผ่าน SSH (จาก kubuntu_laptop)

ต้องใช้คีย์ RSA สำหรับการเชื่อมต่อ SSH ทั้งหมด การเข้าสู่ระบบรหัสผ่านถูกปิดใช้งานตลอดทาง และสังเกตว่าบัญชีผู้ใช้คอมพิวเตอร์นั้นแตกต่างกันที่คอมพิวเตอร์สองเครื่อง

เกี่ยวกับการเชื่อมต่อสำหรับขานี้:

Debian_Server<--nat_fw<--Kubuntu_desktop

นี่คือวิธีการจัดตั้ง:

autossh -M 5234 -N -f -R 1234:localhost:22 user@mydebian.com -p 22

ประกาศ Kubuntu_desktop เชื่อมต่อกับพ่อค้าคนกลางเป็น user@mydebian.com (ไม่ใช่ admin @ debian_server) แต่เมื่อฉันเชื่อมต่อกับ Kubuntu_desktop ฉันจะเชื่อมต่อในฐานะผู้ใช้ที่เป็นผู้ดูแลระบบ

ฉันไม่สามารถเปลี่ยนพอร์ตการตรวจสอบที่มีอยู่ (5234) หรือหมายเลขพอร์ตระยะไกล (- R) (1234 ในตัวอย่างนี้) ฉันไม่สามารถเปลี่ยนการรักษาความปลอดภัย SSH เพื่ออนุญาตการเข้าสู่ระบบด้วยรหัสผ่าน ฉันไม่สามารถเปิดพอร์ตไฟร์วอลล์ใหม่ได้ ฉันไม่สามารถเปลี่ยนบัญชีผู้ใช้ (ยกเว้นในแล็ปท็อป)



@HaukeLaging - ดูน่าสนใจ แต่ฉันไม่เข้าใจ "nc" คืออะไร และเครื่องใดที่ถูกแก้ไข ~ / .ssh / config โดยทั่วไปฉันต้องการรายละเอียดมากกว่าคำถาม / คำตอบที่ให้ ขอบคุณ
MountainX

คำถามนี้ไขว้กันโดยไม่มีการแจ้งเตือนไปยัง Server Fault SE นี่เป็นฟอร์มที่แย่มาก!
mdpc

ขอบคุณสำหรับ downvotes ทุกที่ แต่เกิดอะไรขึ้นกับการถามที่สถานที่สองแห่งที่แตกต่างกัน? คุณจะป้องกันไม่ให้ฉันถามที่ ubuntuforums.org หรือที่อื่น ๆ หรือไม่?
MountainX

@ HaukeLaging- หากใช้ ProxyCommand ในแล็ปท็อปของฉัน ~ / .ssh / config ฉันจะป้อนชื่อโฮสต์ของ Kubuntu_Desktop ได้อย่างไร ไม่มี fqdn นี่คือ SSH ย้อนกลับ ขอบคุณ
MountainX

คำตอบ:


8

ตรวจสอบให้แน่ใจว่าติดตั้ง netcat บนเซิร์ฟเวอร์ Debian และใช้ProxyCommandในการกำหนดค่า SSH ในพื้นที่ของคุณ ( ~/.ssh/config)

Host Kubuntu_desktop
  ProxyCommand ssh Debian_Server nc localhost 1234

ฉันได้ทำตามขั้นตอนทั้งหมดของฉันในคำตอบอื่นเพื่อความสมบูรณ์ แต่ทั้งหมดก็ต้องขอบคุณความช่วยเหลือของคุณ ฉันยอมรับคำตอบของคุณ ขอบคุณ!!!
MountainX

6

ขอบคุณ @Ignacio Vazquez-Abrams นี่คือขั้นตอนทั้งหมด:

ตรวจสอบให้แน่ใจว่าติดตั้ง netcat บนเซิร์ฟเวอร์ Debian และใช้ ProxyCommand ในการกำหนดค่า SSH ในพื้นที่ของคุณ (~ / .ssh / config)

ฉันแก้ไขการกำหนดค่าดังนี้:

me@kubuntu_laptop:~/.ssh$ nano config

เนื้อหาคือ:

Host kubuntu_desktop
  ProxyCommand ssh debian_server_fqdn nc localhost 1234
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

จากนั้นเพียงแค่เชื่อมต่อ:

me@kubuntu_laptop:~$ ssh kubuntu_desktop

เชื่อมต่อกับ kubuntu_desktop ผ่าน SSH ใน 1 ขั้นตอน! สมบูรณ์

ปรับปรุง:

สิ่งนี้ทำให้มีความยืดหยุ่นมากขึ้น:

me@kubuntu_laptop:~/.ssh$ nano config

เนื้อหาใหม่คือ:

Host family_desktops
  ProxyCommand ssh debian_server_fqdn nc localhost %p
  User admin
  PasswordAuthentication no
  IdentityFile ~/.ssh/my_id_rsa

จากนั้นเพียงเชื่อมต่อกับแม่:

me@kubuntu_laptop:~$ ssh family_desktops -p 1234

และเชื่อมต่อกับพ่อ:

me@kubuntu_laptop:~$ ssh family_desktops -p 5678

แน่นอน Mom & Dad ต้องมีขั้นตอนที่ 0 การตั้งค่า (จากคำถามเดิมของฉัน) ที่แต่ละคนมีพอร์ต -R ของตัวเองที่กำหนดไว้ ตัวอย่างสำหรับพ่อ:

ขั้นตอนที่ 0 (สำหรับพ่อ):

autossh -M 6543 -N -f -R 5678:localhost:22 user@mydebian.com -p 22

ไม่จำเป็น:

DAD=5678
ssh family_desktops -p $DAD

ProxyCommand ยังสามารถเขียนเป็น: ProxyCommand ssh debian_server_fqdn -W localhost:%pดังนั้นไม่จำเป็นต้องมี netcat บนเซิร์ฟเวอร์ Debian
เควิน
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.