เป็นไปได้หรือไม่ที่จะรับส่งข้อมูล https ผ่านทางช่องสัญญาณ ssh ด้วยโปรแกรม ssh มาตรฐาน?


12

ฉันสามารถเปลี่ยนเส้นทางการรับส่งข้อมูล https (ของที่เก็บ svn) ผ่าน ssh-tunnel ได้หรือไม่

ปัญหาคือบริการที่ใช้ https ไม่ทำงานหากฉันเพิ่งสร้างช่องสัญญาณหนึ่งช่องเพื่อรับฟังเช่น:

ssh -L 12345:server.com:443 localhost

ฉันต้องทำอย่างอื่นหรือไม่? จุดประสงค์คือทำการอุโมงค์https://PROJECT.googlecode.com/svn/โดยที่ PROJECT เป็นชื่อโครงการ

คำตอบ:


12

การเชื่อมต่อ HTTPS สามารถเปลี่ยนเส้นทางผ่านการส่งต่อพอร์ต SSH - อย่างไรก็ตามการตรวจสอบความถูกต้องใบรับรอง SSL / TLS จะล้มเหลวในกรณีเช่นนี้เนื่องจากชื่อโฮสต์ไม่ตรงกัน:

คุณกำลังเชื่อมต่อกับhttps: // localhost: 12345แต่ใบรับรองเซิร์ฟเวอร์มีชื่อ server.com

แทนที่จะส่งต่อการเชื่อมต่อ HTTPS โดยตรงฉันจะเรียกใช้พร็อกซี HTTP / sOCKS บนคอมพิวเตอร์ระยะไกลที่คุณกำลังเปิดการเชื่อมต่อ SSH จากนั้นตั้งค่าโปรแกรมที่คุณต้องการใช้ช่องสัญญาณเพื่อใช้พร็อกซีนี้ผ่านการส่งต่อพอร์ต นี่จะเป็นทางออกที่สะอาด

อัปเดต: ดูเหมือนว่า SVN สามารถใช้ HTTP พร็อกซีได้ แต่ไม่ใช่ SOCKS proxies หากต้องการทำเช่นนั้นคุณต้องมี "socksifier" เพิ่มเติมในระบบท้องถิ่นของคุณ ดูServerfault.com: ฉันจะตั้งค่าพร็อกซีสำหรับการโค่นล้มด้วย ssh tunnel ได้อย่างไร


ฉันสามารถใช้งานจริงแบบนี้ของวิธีการ: dltj.org/article/ssh-as-socks-proxy ? ดังนั้นในกรณีของ googlecode ฉันจะมีคอมพิวเตอร์เฉพาะที่ -> ถุงเท้าคอมพิวเตอร์ -> googlecode และ "ssh -D" นี้จะทำงานบนเครื่องคอมพิวเตอร์: ssh -D 12345 [ชื่อผู้ใช้] @ [ถุงเท้าคอมพิวเตอร์] ตอนนี้ฉันต้องบอก svn ให้ใช้ proxy ที่เครื่องคอมพิวเตอร์: 12345 ฉันต้องการอย่างอื่นหรือไม่
Juha

เยี่ยมฉันไม่ทราบว่า OpenSSH มีพร็อกซี SOCKS อยู่แล้ว ดูคำตอบที่อัปเดตของฉันด้วย
Robert

6
คุณสามารถแก้ไขปัญหาใบรับรอง HTTPS ได้โดยเพิ่มโฮสต์ระยะไกลลงในไฟล์โฮสต์ในพื้นที่ของคุณด้วยที่อยู่ IP 127.0.0.1 จากนั้นคุณสามารถใช้รีโมตโฮสต์: ที่อยู่12345แต่ทราฟฟิกจะยังถูกนำไปยังอุโมงค์ SSH
Juha Palomäki

@ JuhaPalomäkiคุณควรเพิ่มนี่เป็นคำตอบ
elhefe

1

เพื่อให้สามารถแก้ไขปัญหาใบรับรอง DNS ไม่ตรงกันขณะเข้าถึงเซิร์ฟเวอร์ระยะไกลด้วย SSH tunnel ฉันได้ทำสิ่งต่อไปนี้:

  1. กำหนดค่า SSH tunnel ใน putty เพื่อให้พอร์ตโลคัล 443 ส่งต่อทราฟฟิกไปยังรีโมตเซิร์ฟเวอร์ (L443 : <remote.server.com>:443 )
  2. อัปเดตC:\Windows\System32\drivers\etc\hostsไฟล์เพื่อเพิ่มรายการเช่น127.0.0.1 <remote.server.com>
  3. หากคุณใช้พร็อกซีเซิร์ฟเวอร์ HTTP (ตัวอย่างเช่นหากคุณใช้งานจากพร็อกซีขององค์กร) ให้ข้าม<remote.server.com>โฮสต์จากพร็อกซีระบบ
  4. ตอนนี้คุณสามารถเข้าถึง URL เซิร์ฟเวอร์ระยะไกลด้วย https://<remote.server.com>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.