มีชื่อโฮสต์เสมือนพร็อกซีย้อนกลับ SSH ที่ใช้ชื่อหรือไม่


36

ฉันชอบพร็อกซีย้อนกลับ HTTP ในสภาพแวดล้อมการพัฒนาของเราค่อนข้างมากและพบว่าพร็อกซีย้อนกลับโฮสต์เสมือนที่ใช้ DNS มีประโยชน์มาก การเปิดเพียงพอร์ตเดียว (และพอร์ตมาตรฐาน) บนไฟร์วอลล์ทำให้การจัดการทำได้ง่ายขึ้นมาก

ฉันต้องการค้นหาสิ่งที่คล้ายกับการเชื่อมต่อ SSH แต่ไม่มีโชคมาก ฉันไม่ต้องการเพียงแค่ใช้ SSH tunneling เนื่องจากต้องเปิดช่วงพอร์ตอื่นที่ไม่ใช่มาตรฐาน มีอะไรอีกบ้างที่สามารถทำสิ่งนี้ได้?

HAProxy ทำเช่นนี้ได้หรือไม่?


การถ่ายโอนไฟล์แอปพลิเคชันที่คุณต้องการหรือการเข้าถึงโฮสต์ SSH จริงหรือไม่
Kyle Hodgson

การเข้าถึง SSH โดยตรงไปยังโฮสต์เป็นเป้าหมาย ความต้องการนี้มาจากความต้องการใช้งานเซิร์ฟเวอร์ Mercurial ภายใน บริษัท แต่เซิร์ฟเวอร์ของเราอยู่หลังไฟร์วอลล์ ตอนนี้ฉันกำลังทำงานเพียงตั้งค่าเวอร์ชัน HTTP แต่ฉันต้องการให้คอมมิชชันใช้ SSH แทน HTTP การเข้าใช้ SSH โดยตรงไปยังเซิร์ฟเวอร์อื่น ๆ จะเป็นโบนัสหากเป็นไปได้
ahanson

นี่เป็นปัญหาที่น่ารำคาญ
อคติ

ความเข้าใจของฉันคือตอนนี้ HAProxy สนับสนุนผ่าน SNI แม้ว่าฉันจะยังไม่สามารถทำสิ่งนี้ได้
Carel

คำตอบ:


24

ฉันไม่เชื่อว่า SSH แบบใช้ชื่อเป็นสิ่งที่จะเป็นไปได้เมื่อโปรโตคอลทำงาน

นี่คือทางเลือกบางอย่าง

  • คุณสามารถทำได้คือตั้งค่าโฮสต์ที่ตอบรับพอร์ต 22 เพื่อทำหน้าที่เป็นเกตเวย์ จากนั้นคุณสามารถกำหนดค่าเซิร์ฟเวอร์ ssh เพื่อส่งต่อการร้องขอไปยังด้านในตามคีย์ ตัวอย่างSSH Gatewayพร้อมคีย์

  • คุณสามารถปรับไคลเอ็นต์ของคุณเพื่อใช้โฮสต์นั้นเป็นพร็อกซี นั่นคือมันจะ ssh ไปที่โฮสต์เกตเวย์จากนั้นใช้ประโยชน์จากโฮสต์นั้นเพื่อทำการเชื่อมต่อกับโฮสต์ภายใน พร็อกซี่ SSH กับลูกค้าการกำหนดค่า

  • คุณสามารถตั้งค่าพร็อกซี http แบบง่าย ๆ ได้ที่ขอบ จากนั้นใช้เพื่ออนุญาตการเชื่อมต่อขาเข้า SSH ผ่านพร็อกซี HTTP

เห็นได้ชัดว่าจากทั้งหมดข้างต้นทำให้แน่ใจว่าคุณกำหนดค่าและล็อคประตูอย่างถูกต้องเป็นสิ่งสำคัญ


17

ฉันค้นหาวิธีแก้ไขปัญหานี้เป็นระยะเวลา 16 เดือนที่ผ่านมา แต่ทุกครั้งที่ฉันดูมันเป็นไปไม่ได้ที่จะทำเช่นนี้กับโปรโตคอล SSH ตามที่ระบุไว้ใน RFC ที่เกี่ยวข้องและดำเนินการโดยการใช้งานที่สำคัญ

อย่างไรก็ตามหากคุณยินดีที่จะใช้ไคลเอนต์ SSH ที่ปรับเปลี่ยนเล็กน้อยและคุณยินดีที่จะใช้โปรโตคอลในแบบที่ไม่ได้ตั้งใจอย่างแท้จริงเมื่อพวกเขาได้รับการออกแบบก็เป็นไปได้ที่จะบรรลุ เพิ่มเติมเกี่ยวกับเรื่องนี้ด้านล่าง

ทำไมมันเป็นไปไม่ได้

ไคลเอ็นต์ไม่ส่งชื่อโฮสต์เป็นส่วนหนึ่งของโปรโตคอล SSH

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

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

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

ข้อสรุปสำหรับฉันค่อนข้างชัดเจนเราต้องเปลี่ยนบางอย่างในฝั่งไคลเอ็นต์เพื่อให้การเชื่อมต่อนี้ใช้งานได้

การแก้ปัญหาส่วนใหญ่กำลังสรุปการรับส่งข้อมูล SSH ภายในโปรโตคอลอื่น เราอาจจินตนาการได้ว่าการเพิ่มโปรโตคอล SSH นั้นด้วยซึ่งแบนเนอร์รุ่นที่ส่งโดยไคลเอนต์จะมีชื่อโฮสต์ สิ่งนี้สามารถยังคงเข้ากันได้กับ severs ที่มีอยู่เนื่องจากส่วนหนึ่งของแบนเนอร์ถูกระบุในขณะนี้เป็นเขตการระบุรูปแบบอิสระและแม้ว่าลูกค้ามักจะรอแบนเนอร์รุ่นจากเซิร์ฟเวอร์ก่อนที่จะส่งของตัวเองโปรโตคอลจะอนุญาตให้ลูกค้าส่งแบนเนอร์ของพวกเขา เป็นครั้งแรก ไคลเอ็นต์ ssh บางเวอร์ชันล่าสุด (ตัวอย่างหนึ่งบน Ubuntu 14.04) ส่งแบนเนอร์โดยไม่รอแบนเนอร์เซิร์ฟเวอร์

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

ทางออกที่แท้จริง

ทางออกที่ดีที่สุดสำหรับฉันจริงๆแล้วคือการใช้ IPv6

ด้วย IPv6 ฉันสามารถกำหนดที่อยู่ IP แยกต่างหากให้กับแต่ละเซิร์ฟเวอร์ดังนั้นเกตเวย์สามารถใช้ที่อยู่ IP ปลายทางเพื่อค้นหาเซิร์ฟเวอร์ที่จะส่งแพ็คเก็ตได้ บางครั้งไคลเอ็นต์ SSH อาจทำงานบนเครือข่ายซึ่งวิธีเดียวที่จะได้รับที่อยู่ IPv6 คือการใช้ Teredo Teredo เป็นที่รู้จักกันไม่น่าเชื่อถือ แต่เฉพาะเมื่อสิ้นสุด IPv6 ดั้งเดิมของการเชื่อมต่อใช้รีเลย์สาธารณะ Teredo หนึ่งสามารถใส่รีเลย์ Teredo บนเกตเวย์ที่คุณต้องการเรียกใช้พร็อกซี่ Miredo สามารถติดตั้งและกำหนดค่าเป็นรีเลย์ในเวลาน้อยกว่าห้านาที

วิธีแก้ปัญหา

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

ssh -o ProxyCommand='ssh -W %h:%p user1@bastion' user2@target

แฮ็กที่สกปรกเพื่อให้ทำงานได้หากโซลูชันจริง (IPv6) อยู่นอกเหนือการเข้าถึงของคุณ

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

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

HTTP และ HTTPS อนุญาตให้ไคลเอนต์ส่งชื่อโฮสต์ก่อนที่เซิร์ฟเวอร์จะส่งข้อมูลใด ๆ คำถามตอนนี้คือไม่ว่าจะเป็นไปได้ที่จะสร้างกระแสของไบต์ที่ถูกต้องพร้อมกันเป็นทราฟฟิก SSH และเป็น HTTP และ HTTPS HTTP เป็นค่าเริ่มต้นที่ค่อนข้างมาก แต่เป็นไปได้ HTTP (สำหรับคำจำกัดความที่เป็นอิสระของ HTTP อย่างเพียงพอ)

SSH-2.0-OpenSSH_6.6.1 / HTTP/1.1
$: 
Host: example.com

ดูเหมือน SSH หรือ HTTP กับคุณหรือไม่ มันเป็น SSH และเป็นไปตาม RFC อย่างสมบูรณ์ (ยกเว้นบางส่วนของตัวละครไบนารีได้ mangled บิตโดยการแสดงผล SF)

สตริง SSH / HTTP/1.1รุ่นรวมถึงการแสดงความคิดเห็นฟิลด์ซึ่งในข้างต้นมีค่า หลังจาก newline SSH มีข้อมูลแพ็กเก็ตไบนารีบางส่วน แพ็คเก็ตแรกคือMSG_SSH_IGNOREข้อความที่ส่งโดยไคลเอนต์และละเว้นโดยเซิร์ฟเวอร์ เพย์โหลดที่จะถูกละเว้นคือ:

: 
Host: example.com

หากพร็อกซี HTTP นั้นเปิดเสรีอย่างเพียงพอในสิ่งที่ยอมรับดังนั้นลำดับไบต์เดียวกันจะถูกตีความว่าเป็นวิธี HTTP ที่เรียกว่าSSH-2.0-OpenSSH_6.6.1และข้อมูลไบนารีที่จุดเริ่มต้นของข้อความเพิกเฉยจะถูกตีความว่าเป็นชื่อส่วนหัว HTTP

พร็อกซีจะเข้าใจทั้งวิธี HTTP หรือส่วนหัวแรก แต่มันสามารถเข้าใจHostส่วนหัวซึ่งเป็นสิ่งที่จำเป็นเพื่อค้นหาแบ็กเอนด์

เพื่อให้สามารถใช้งานพร็อกซีได้จะต้องได้รับการออกแบบบนหลักการที่ว่าจะต้องเข้าใจ HTTP อย่างเพียงพอเพื่อค้นหาแบ็กเอนด์และเมื่อพบแบ็กเอนด์แล้วพร็อกซีก็จะผ่านสตรีมไบต์ดิบและปล่อยให้เลิกจริง ของการเชื่อมต่อ HTTP ที่ต้องทำโดยแบ็กเอนด์

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

ในกรณีของฉันเองฉันพบวิธีนี้เพื่อทำงานกับพร็อกซีที่ติดตั้งไว้แล้วโดยไม่มีการเปลี่ยนแปลงโค้ดการกำหนดค่าหรืออื่น ๆ และนี่คือสำหรับพร็อกซีที่เขียนด้วย HTTP เท่านั้นและไม่มี SSH ในใจ

หลักฐานของแนวคิดลูกค้าและพร็อกซี่ (ข้อจำกัดความรับผิดชอบว่าพร็อกซีเป็นบริการที่ดำเนินการโดยฉันโปรดแทนที่ลิงก์เมื่อพร็อกซีอื่นได้รับการยืนยันเพื่อรองรับการใช้งานนี้)

คำเตือนของแฮ็คนี้

  • อย่าใช้มัน ดีกว่าที่จะใช้โซลูชันจริงซึ่งก็คือ IPv6
  • หากพร็อกซีพยายามที่จะเข้าใจทราฟฟิก HTTP มันจะหยุดลงอย่างแน่นอน
  • การใช้ไคลเอ็นต์ SSH ที่แก้ไขแล้วนั้นไม่ดี

คุณสามารถอธิบายความหมายthe gateway can use the destination IP address to find out which server to send the packet toของโซลูชั่น IPv6 ได้อย่างไร
Jacob Ford

@JacobFord กุญแจสำคัญในการทำความเข้าใจประโยคนั้นคือว่าผมใช้คำว่าประตูไม่ได้พร็อกซี่ ด้วย IPv6 คุณจะได้รับที่อยู่ IP เพียงพอที่จะกำหนดให้กับทุก ๆ โฮสต์และยังมีที่อยู่สำรอง เครื่องทั้งหมดที่คุณใส่ไว้ด้านหลังพร็อกซีจะมีที่อยู่ IP ของตัวเองซึ่งเป็นชื่อที่คุณต้องการให้แก้ไข ดังนั้นคุณไม่ต้องการพร็อกซีอีกต่อไปไคลเอนต์ส่งทราฟฟิกไปยังที่อยู่ IP ของโฮสต์ที่ต้องการและคุณสามารถกำหนดเส้นทางทราฟฟิกได้โดยตรง
kasperd

สำหรับส่วนวิธีการแก้ปัญหามีสวิตช์คำสั่งที่ค่อนข้างใหม่สำหรับ ssh -Jดังนั้นคุณสามารถใช้: ssh -J user1 @ front user2 @ target
PMN

3

ฉันไม่เชื่อว่านี่เป็นสิ่งที่เป็นไปได้อย่างน้อยที่สุดวิธีที่คุณอธิบายแม้ว่าฉันจะชอบที่จะพิสูจน์ว่าผิด ไม่ปรากฏว่าลูกค้าส่งชื่อโฮสต์ที่ต้องการเชื่อมต่อ (อย่างน้อยก็ชัดเจน) ขั้นตอนแรกของการเชื่อมต่อ SSH ดูเหมือนว่าเป็นการตั้งค่าการเข้ารหัส

นอกจากนี้คุณจะมีปัญหากับการยืนยันคีย์โฮสต์ ลูกค้า SSH จะตรวจสอบคีย์ตามที่อยู่ IP เช่นเดียวกับชื่อโฮสต์ คุณจะมีชื่อโฮสต์หลายชื่อที่มีคีย์แตกต่างกัน แต่ IP เดียวกันกับที่คุณเชื่อมต่อ

ทางออกที่เป็นไปได้คือการมีโฮสต์ 'ป้อมปราการ' ที่ซึ่งลูกค้าสามารถ ssh เข้าไปในเครื่องนั้นได้รับเชลล์ (หรือ จำกัด ถ้าต้องการ) ปกติและจากนั้นสามารถ ssh เข้าสู่โฮสต์ภายในจากที่นั่น


แนวคิดของป้อมปราการคือสิ่งที่เราปัจจุบันมีการตั้งค่า แต่เป็นปัญหาสำหรับการควบคุมเวอร์ชันของฉัน (โดยไม่ต้องใช้ความพยายามพิเศษ)
ahanson

มันน่ารำคาญสุด ๆ ที่ ssh ไม่ส่ง fqdn และจัดการ DNS ที่ฝั่งไคลเอ็นต์ ฉันเดาว่าผู้คนไม่ต้องกังวลเกี่ยวกับ bloat IP สาธารณะและ NAT เมื่อโปรโตคอลระดับแอปพลิเคชัน TCP / IP ส่วนใหญ่ถูกสร้างขึ้น เพราะอย่างจริงจังคุณควรจะสามารถทำ FQDN ตาม NAT กับ iptables (เช่นตัวกรองเคอร์เนล)
อคติ

hostkey อาจเป็นกุญแจของ reverse proxy นี่เป็นประโยชน์ถ้าคุณเชื่อมั่นในความปลอดภัยของแบ็กเอนด์เนื่องจากคุณสามารถควบคุมเครือข่ายและโฮสต์ภายในได้
rox0r

@bias คุณไม่สามารถทำ NAT ตามชื่อโฮสต์ได้แม้ว่าโปรโตคอลระดับสูงกว่าจะส่งชื่อโฮสต์ เหตุผลที่ไม่สามารถทำได้คือต้องเลือกแบ็คเอนด์เมื่อได้รับแพ็คเก็ต SYN แต่ชื่อโฮสต์จะถูกส่งเฉพาะหลังจากการประมวลผล SYN แล้วและส่งคืน SYN-ACK อย่างไรก็ตามคุณสามารถใช้พร็อกซีเลเยอร์แอปพลิเคชั่นที่บางมากสำหรับโปรโตคอลที่ส่งชื่อโฮสต์เช่น http และ https
kasperd

3

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

SSH ไพเพอร์บน GitHub

การทดสอบครั้งแรกของฉันได้รับการยืนยัน SSH และ SFTP ทำงานได้ทั้งคู่


นั่นคือการโจมตี MITM อย่างมีประสิทธิภาพ ฉันคาดหวังว่ามันจะแตกหักในการตั้งค่าทุกอย่างที่ป้องกันการโจมตีของ MITM
kasperd

1
อันที่จริงงานเลี้ยงเป็นเจ้าภาพทั้งโฮสต์และคนที่อยู่ตรงกลางดังนั้นทั้งสองมีส่วนเกี่ยวข้องเท่านั้น
KirályIstván

@ KirályIstvánนี่เป็นโครงการที่ยอดเยี่ยมและพิสูจน์ได้ว่าคำตอบอื่น ๆ นั้นไม่ถูกต้อง 100% ฉันสร้างเครื่องมือที่คล้ายกันโดยยึดตามgithub.com/gliderlabs/sshfrontและ bash / python บางตัว (ฉันไม่สามารถเปิดแหล่งที่มาได้ แต่มันไม่น่าสนใจเลย - bash นั้นใช้ไคลเอ็นต์ ssh และ python ใช้เป็นตัวจัดการรับรองความถูกต้อง) แต่ฉันมีหนึ่งปัญหากับทางออกปัจจุบัน ไม่สนับสนุน sftp (การทำงานของ scp) debug1: Sending subsystem: sftpมันแฮงค์พยายามที่จะใช้ระบบย่อย ปรากฎว่าเสื้อด้านหน้าไม่รองรับระบบย่อย คุณสนับสนุนมิ้มในไพเพอร์ SSh หรือไม่?
Maciek Sawicki

1
@MaciekSawicki ฉันไม่ใช่ผู้เขียน ฉันใช้มันในโครงการของฉัน .)
KirályIstván

2

ฉันสงสัยว่า Honeytrap (honeypot ที่มีปฏิสัมพันธ์ต่ำ) ที่มีโหมดพร็อกซีไม่สามารถแก้ไขได้เพื่อให้บรรลุ

honeypot นี้สามารถส่งต่อโปรโตคอลใด ๆ ไปยังคอมพิวเตอร์เครื่องอื่น การเพิ่มชื่อระบบ vhost (ตามที่ Apache นำมาใช้) สามารถทำให้ reverse proxy สมบูรณ์แบบสำหรับโปรโตคอลใด ๆ ได้หรือไม่?

ฉันไม่มีทักษะในการทำเช่นนั้น แต่อาจเป็นโครงการที่ยอดเยี่ยม


ความคิดที่ยอดเยี่ยม!
อคติ

1
คุณลักษณะ vhost ใน Apache ขึ้นอยู่กับไคลเอนต์ที่ส่งชื่อโฮสต์ก่อนที่ข้อมูลใด ๆ จะถูกส่งจากเซิร์ฟเวอร์ โปรโตคอล SSH ไม่เกี่ยวข้องกับชื่อโฮสต์ดังนั้นฉันไม่เห็นว่าคุณจะเริ่มนำคุณลักษณะดังกล่าวไปใช้อย่างไร แต่ถ้าคุณสามารถอธิบายความคิดของคุณได้อย่างละเอียดถี่ถ้วนฉันยินดีที่จะใช้การพิสูจน์แนวคิดหรือบอกคุณทำไมมันไม่ทำงาน
kasperd

1

เมื่อจำนวนพอร์ต / โฮสต์ที่คุณต้องการเข้าถึงหลังไฟร์วอลล์เพิ่มขึ้นความสะดวกสบายของ VPN จะเพิ่มขึ้น

แม้ว่าฉันไม่ชอบ VPN


1

เพราะวิธีการทำงานของ ssh ฉันคิดว่ามันเป็นไปไม่ได้ คล้ายกับ https คุณจะต้องมี IP (ภายนอก) ที่แตกต่างกันสำหรับโฮสต์ที่ต่างกันเนื่องจากเกตเวย์ไม่ทราบว่าคุณต้องการเชื่อมต่อที่ใดเพราะทุกอย่างใน ssh มีการเข้ารหัส

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.