Score:0

SSH Tunnel (Port Forward) กับ SSH ProxyJump ฉันควรใช้อันใดในกรณีเฉพาะนี้ Me -> JumpSever -> TargetServer

ธง my

ฉันยังใหม่กับ SSH Tunnel ฉันได้อ่าน วิกิพีเดียของ OpenSSH Proxy ซ้ำแล้วซ้ำเล่ายังสับสน

เป้าหมายกำลังสร้างพร็อกซีสองเท่าโดยมีเพียง SSH Tunnels (การส่งต่อพอร์ต) หรือ ProxyJump (ไม่แน่ใจว่าฉันควรเรียกมันว่าอะไร)

ตัวอย่างเช่น, ฉัน 192.168.1.1-->เชื่อมต่อกับ-->Jump ServerA 1.1.1.1แล้วฉันจะไปถึงจริงๆ เซิร์ฟเวอร์เป้าหมายB 2.2.2.2ถ้าฉันตั้งค่าพร็อกซี socks5 ด้วย เซิร์ฟเวอร์A 1.1.1.1ในที่สุดฉันจะได้รับพร็อกซีโดย IP ของ ServerB 2.2.2.2

ฉันรู้วิธีจัดการกับ ฉัน >-ถึง-> เซิร์ฟเวอร์ กแต่ฉันไม่รู้วิธีจัดการกับ เซิร์ฟเวอร์ ก >-ถึง-> เซิร์ฟเวอร์ B, ( ฉันหมายถึง ฉันมีสิทธิ์เข้าถึงและรูทของเซิร์ฟเวอร์เหล่านี้ทั้งหมด แต่ฉันไม่รู้วิธีตั้งค่า )

ฉันเป็นคนเรียนรู้ช้ามาก ความคิดใด ๆ ที่จะได้รับการชื่นชมจริง ๆ

(ไม่เป็นไรถ้าคุณต้องการโพสต์คำสั่งหรือวิธีการที่แน่นอนสำหรับตัวอย่างนี้ ซึ่งจะช่วยได้มาก)

Score:3
ธง za

ข้อกำหนดพื้นฐานคือ:

  • ServerB ต้องสามารถเข้าถึงได้จาก ServerA เท่านั้น คุณไม่ได้เชื่อมต่อโดยตรง
  • ServerA ต้องเปิดใช้งาน TCP Tunneling
  • ServerA ต้องสามารถเข้าถึงได้จากคุณ

คุณตั้งค่าการเชื่อมต่อกับ ServerB ผ่าน Jumphost (ใน .ssh/config):

โฮสต์เซิร์ฟเวอร์ ข
    ProxyJump ServerA

ซึ่งถือว่าถ้าคุณเข้า เซิร์ฟเวอร์ sshAคุณจะลงเอยที่ ServerA และหากคุณอยู่ที่ ServerA ให้ป้อน เซิร์ฟเวอร์ sshBคุณจะจบลงที่ ServerB เช่น. ชื่อ "ServerB" ควรจะแก้ไขได้บน ServerA แต่จะไม่สนใจว่าจะสามารถแก้ไขได้ในฝั่งของคุณหรือไม่ อาจเป็นชื่อโฮสต์หรือ "ทาก" (ชื่อเล่น) ในกรณีหลังนี้ คุณเชื่อมโยงชื่อโฮสต์หรือที่อยู่ IP อีกครั้งใน .ssh/config:

เซิร์ฟเวอร์โฮสต์ ก
    ชื่อโฮสต์ ip.add.re.ss

โฮสต์เซิร์ฟเวอร์ ข
    ProxyJump ServerA
    ชื่อโฮสต์ host.na.me

คุณยังสามารถระบุชื่อผู้ใช้ที่จะใช้สำหรับพร็อกซีโฮสต์:

เซิร์ฟเวอร์โฮสต์ ก
    พร็อกซีผู้ใช้
    ชื่อโฮสต์ ip.add.re.ss

โฮสต์เซิร์ฟเวอร์ ข
    ProxyJump ServerA
    ชื่อโฮสต์ host.na.me

หลังจากนั้นคุณเข้าสู่ เซิร์ฟเวอร์ sshB. OpenSSH เชื่อมต่อกับ ServerA และใช้พอร์ตสุ่มเพื่อส่งต่อผ่านการเชื่อมต่อนี้ไปยังที่อยู่ของ ServerB พอร์ต 22 การเชื่อมต่อนี้ถูกแยกเป็นพื้นหลัง OpenSSH เชื่อมต่อกับพอร์ตที่ส่งต่อแบบสุ่มนี้ทันที (ไปยัง localhost แต่จริงๆ แล้วตรวจสอบคีย์เข้า .ssh/known_hosts กับชื่อ "ServerB" และที่อยู่ IP ที่ระบุใน HostName หากมี) ดังนั้นคุณจะลงเอยที่ ServerB โดยตรง หากคุณพิมพ์ว่า "ใคร" ระบบจะบอกว่าคุณเชื่อมต่อจากที่อยู่ ServerA ใครก็ตามที่อยู่ระหว่างคุณกับ ServerA จะไม่มีทางรู้ว่าคุณกำลังคุยกับ ServerB จริงๆ

คุณสามารถใช้ตัวเลือกบรรทัดคำสั่ง SSH ซึ่งจะใช้สำหรับ เซิร์ฟเวอร์B การเชื่อมต่อ (ทำผ่านพอร์ตส่งต่อ) เช่น. ถ้าคุณใช้ ssh -D 12345 user@ServerBโดยจะเชื่อมต่อกับ ServerA ในฐานะผู้ใช้พร็อกซีโดยมีพอร์ตส่งต่อไปยัง ServerB:22 จากนั้นเชื่อมต่อกับพอร์ตนั้นและรับรองความถูกต้องกับ ServerB ในฐานะผู้ใช้ และจะติดตั้งพร็อกซี SOCKS5 บนพอร์ต 12345ที่อยู่ทางออกสำหรับ SOCKS5 นั้นจะเป็น ServerB เช่น หากคุณใช้พร็อกซีนั้น (เช่น ในเบราว์เซอร์) ฝ่ายที่อยู่ห่างไกลจะเห็นว่าคุณกำลังเชื่อมต่อจากที่อยู่ของ ServerB

คุณสามารถสแต็ค Jumphosts ได้มากขึ้น มันจะใช้ได้เช่นกัน:

โฮสต์เซิร์ฟเวอร์ ข
    ProxyJump ServerA

ค. โฮสต์เซิร์ฟเวอร์
    เซิร์ฟเวอร์ ProxyJump

และ เซิร์ฟเวอร์ ssh จะเชื่อมต่อกับ ServerA ก่อนด้วยการส่งต่อพอร์ตไปยัง ServerB:22 จากนั้นจะเชื่อมต่อผ่านการส่งต่อนั้นไปยัง ServerB ด้วยพอร์ตอื่นที่ส่งต่อไปยัง ServerC จากนั้นเชื่อมต่อกับพอร์ตอื่นและคุณจะได้เชลล์ ServerC

สังเกตว่าคุณจะถูกถามรหัสผ่านสำหรับ แต่ละ การเชื่อมต่อ. มันค่อนข้างยุ่งยาก ดีกว่ามีการตั้งค่าและใช้งานการยืนยันตัวตนด้วยคีย์ ssh-ตัวแทน.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา