ฉันจะตั้งค่าพร็อกซีสำหรับการโค่นล้มด้วย ssh tunnel ได้อย่างไร


24

ฉันต้องการตรวจสอบ / อัปเดตรหัสผ่านพร็อกซีเนื่องจากการเชื่อมต่อท้องถิ่นของฉันช้า ฉันตั้งค่า ssh tunnel: ssh -D 8090 user@ssh.proxy.net เพื่อส่งต่อแพ็กเก็ตทั้งหมดไปยัง localhost ของฉัน: 8090

ฉันจะตั้งค่าการโค่นล้มเพื่อใช้สิ่งนี้ได้อย่างไร

ssh  svn  proxy 

+1 คำถามที่ดี ฉันสนใจที่จะดูว่ามีวิธีการเช่นกันหรือไม่ ฉันมี Wi-Fi ที่ช้ามากและบ่อยครั้งที่เรียกดูผ่านพร็อกซี SOCKS ที่ตั้งค่าไว้ในลักษณะเดียวกันมันจะมีประโยชน์มากถ้ามีการโค่นล้ม (หรืออื่น ๆ ) ใช้เหมือนกัน
Tim Post

และพร็อกซีทำให้ Wi-Fi ของคุณเร็วขึ้นไหม
innaM

คำตอบ:


21

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

อย่างไรก็ตามปัญหาของคุณคือการโค่นล้มสามารถเชื่อมต่อผ่านพร็อกซี HTTP หรือทันเนล SSH แต่ไม่มีความคิดเกี่ยวกับ SOCKS ดังนั้นคุณต้อง SOCKSify Subversion โดยการจับการเชื่อมต่อ TCP ทั้งหมดและเปลี่ยนเส้นทางไปยังพร็อกซี SOCKS

แทนที่จะต้องถอดความจากคนที่เคยทำมาก่อนฉันจะพาคุณไปอธิบายอย่างละเอียด:

หรือสรุปสั้น ๆ ส่วนใหญ่ cut'n'pasted จากหน้าของ Oliver:

Debian มีถุงเท้าสองตัวที่มีอยู่ใน sourceforge ด้วย หนึ่งที่อัพเดตล่าสุดคือ ProxyChains และค่อนข้างตรงไปตรงมาเพื่อกำหนดค่า ถุงเท้าส่วนใหญ่ทำงานในลักษณะเดียวกันดังนั้นคำแนะนำเหล่านี้ควรเป็นกรณีทั่วไปที่สมเหตุสมผล ในการกำหนดค่า ProxyChains คุณเพียงแค่ต้องแก้ไข $ (HOME) /. proxychains / proxychains.conf ให้มีเพียงบรรทัดต่อไปนี้:

DynamicChain
tcp_read_time_out 15000
tcp_connect_time_out 10000
[ProxyList]
socks5 127.0.0.1 8090
# NB: for some reason 'localhost' doesn't work in the above line

สิ่งที่คุณต้องทำคือ 'wrap' svn ใน ProxyChains

proxychains svn commit

ในตัวอย่างข้างต้นแอปพลิเคชัน svn นั้นไม่มีใครฉลาดที่ TCP เชื่อมต่อกับเซิร์ฟเวอร์การโค่นล้มถูกเปลี่ยนเส้นทางลงพร็อกซี SOCKS ของคุณ "


ขอบคุณมากสำหรับฉัน หากคุณอยู่ใน OS X และต้องมีการส่งต่อ DNS ให้ใช้ทางแยก proxychain นี้ github.com/haad/proxychainsและตรวจสอบให้แน่ใจว่าบรรทัด 'proxy_dns' อยู่ในการกำหนดค่าหลังจากบรรทัดแรก
Gourneau

2

โพสต์ที่นี่เนื่องจากฉันพบ kludge-y น้อยลงในการทำเช่นนี้ คุณสามารถใช้Polipoเพื่อใช้ช่องสัญญาณ SSH SOCKS ผ่านพร็อกซี HTTP ได้โดยเพิ่มบรรทัดต่อไปนี้ลงในการกำหนดค่า

socksParentProxy = "localhost:8090"
socksProxyType = socks5

polipo8123โดยค่าเริ่มต้นฟังพอร์ต และจากนั้นใน$HOME/.subversion/serversสร้างกลุ่มสำหรับโฮสต์โค่นล้มคุณต้องการที่จะตรวจสอบจากเช่นถ้าโค่นล้มโฮสต์พื้นที่เก็บข้อมูลของคุณ (s) มีการตั้งชื่อproj1.svn.domain.tld, proj2.svn.domain.tldฯลฯ แล้วเพิ่มต่อไปนี้เพื่อ[groups]แสดง:

[groups]
domain = *.svn.domain.tld

และสุดท้ายระบุการกำหนดค่าพร็อกซีสำหรับกลุ่มโฮสต์ที่คุณเพิ่งเพิ่มโดยเพิ่มบล็อกสำหรับกลุ่ม:

[domain]
http-proxy-host=localhost
http-proxy-port=8123

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

HTH


"localhost: 8090" มีไว้ทำอะไร?
Deqing

@Deqing เป็น SOCKS proxy ที่ polipo ใช้เป็น upstream
Ashish SHUKLA

1

ฉันไม่รู้เกี่ยวกับการสร้างอุโมงค์ด้วยssh -Dแต่ใช้สิ่งที่ชอบ

ssh -L8090:svn.server.com:22 user@other.server.com

จากนั้นคุณสามารถทำช่องสัญญาณได้โดยการเพิ่มโปรโตคอลใหม่ลงในการโค่นล้มด้วยพอร์ตเฉพาะที่ช่องสัญญาณเปิดอยู่ ดังนั้นใน ~ / .svversion / config เพิ่มบรรทัดเช่น

pssh = ssh -p8090

ใน[tunnels]ส่วนและจากนั้นแทนที่จะใช้ svn + ssh: //user@original.com ให้ใช้ svn + pssh: // user @ localhost

หากคุณมีสำเนาการทำงานที่มีอยู่คุณสามารถใช้

svn switch --relocate svn+ssh://user@original.com svn+pssh://user@localhost

เพื่อสลับที่อยู่สำเนาการทำงานเชื่อมโยงกับโดยไม่ต้องทำการชำระเงินใหม่


ฉันจับไม่ได้ สมมติว่าฉันเดิมเช็คเอาต์ด้วย: svn co svn: //code.somewhere.com/prj prj ฉันจะทำอะไรได้ตอนนี้ โดยทั่วไปฉันไม่เข้าใจจริงๆคุณหมายถึงอะไร: "แทนที่จะ svn + ssh: //user@ssh.proxy.net" ขอบคุณ

หากคุณมีสำเนาการทำงานที่ได้รับsvn co svn+ssh://code.somewhere.com/prj prjแล้วการเข้าสู่prj/และทำงานsvn switch --relocate svn+ssh://code.somewhere.com svn+pssh://localhost/จะอัปเดต wc เพื่อดูราวกับว่ามันได้รับผ่านsvn co svn+pssh://localhost/prj prj
blahdiblah

บางทีเราอาจเข้าใจผิดบางแห่ง ที่จริงฉันต้องการตรวจสอบรหัสบนเซิร์ฟเวอร์ A ผ่านเซิร์ฟเวอร์ B (ssh -D 8090 user @ B) ไปยังเครื่องท้องถิ่นของฉันเป็นไปได้หรือไม่ svn co svn + pssh: // localhost / prj prj ดูเหมือนว่าจะทำการเช็กเอาโค้ดหนึ่งที่เซิร์ฟเวอร์ B ยกเว้นว่าฉันไม่ได้รับมา

ฉันได้อัปเดตเพื่อแก้ไขปัญหานี้ด้วยช่องสัญญาณ ssh ที่ฉันรู้ หากฉันเข้าใจถูกต้องให้ใช้ "ssh -L8090: serverA.com: 22 user@serverB.com" แล้ว "svn co svn + pssh: // user @ localhost / prj prj" จะตรวจสอบรหัสจากเซิร์ฟเวอร์ A บนของคุณ เครื่องผ่านเซิร์ฟเวอร์ B.
blahdiblah

Ah! ฉันคิดว่าฉันเห็นว่าความสับสนอาจจะอยู่ที่ไหน การตั้งค่าช่องสัญญาณเริ่มต้นเชลล์บนพร็อกซีเซิร์ฟเวอร์ แต่นี่ไม่ใช่ตำแหน่งที่คำสั่ง svn เกิดขึ้น สิ่งเหล่านี้ควรเกิดขึ้นในเชลล์แยกต่างหากในคอมพิวเตอร์ของคุณ แฟล็ก -f สำหรับ ssh อาจอนุญาตให้ใช้เชลล์เดียวกัน
blahdiblah

1

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


1

มีโอกาสเมื่อมันจำเป็นต้องมีของ Windows PC ที่จะได้รับ SVN + SSH เชื่อมต่อกับพื้นที่เก็บข้อมูล SVN ผ่านถุงเท้าพร็อกซีเซิร์ฟเวอร์ ปัญหานี้สามารถแก้ไขได้ด้วย Putty ซึ่งมีฟังก์ชัน SSH และสามารถทำงานกับพร็อกซีชนิดต่าง ๆ โซลูชันที่เสนอไม่ต้องการการส่งต่อพอร์ตในเครื่อง

  1. เรียกใช้ putty และสร้างเซสชัน (เช่น socks_proxy)
  2. กำหนดค่าเฉพาะพร็อกซี่สำหรับเซสชั่น (connection-> พร็อกซี) ที่มันต้องส่งชื่อโฮสต์พร็อกซีและพอร์ต Putty ทำงานได้กับการเลือกประเภทพร็อกซี่ที่แตกต่างกันรวมทั้ง SOCKS4 และ SOCKS5 คุณสามารถระบุชื่อผู้ใช้และรหัสผ่านสำหรับการเข้าถึงพร็อกซี
  3. บันทึกเซสชัน โปรดจำไว้ว่าเซสชันจะไม่มีชื่อโฮสต์ที่กำหนดค่าไว้สำหรับการเชื่อมต่อ
  4. เปิดไฟล์การกำหนดค่า SVN Application Data \ Subversion \ configและค้นหาส่วน[ช่องสัญญาณ]
  5. คำอธิบาย SVN โปรโตคอลใส่เพิ่มเติมด้านล่างชื่อส่วน: SSH = PATH_TO_PLINK / plink.exe -load socks_proxy ชื่อโปรโตคอลจริง ๆ เป็นทางเลือกของคุณเพื่อให้คุณสามารถเลือกชื่อใด ๆ ถ้า ssh ถูกใช้ไปแล้ว (เช่นใช้pssh =แทนssh = )
  6. ที่สำคัญการกำหนดค่าสำหรับการเข้าถึง SSH ไปยังเซิร์ฟเวอร์เป้าหมายที่ SSH จะถูกใช้ในการทำงานsvnserve ขอแนะนำให้ใช้การประกวดเพื่อรักษากุญแจ
  7. ใช้ svn สำหรับการเข้าถึง svn + ssh ชื่อผู้ใช้ควรถูกส่งผ่านใน URL - svn ls svn + protocol_name : // ชื่อผู้ใช้ @ เซิร์ฟเวอร์ / ที่เก็บซึ่งชื่อโปรโตคอลควรถูกแทนที่ด้วยชื่อจริงที่ใช้ในส่วน[ช่องสัญญาณ]ของการกำหนดค่า SVN

คืออะไร - SVN จะใช้ชื่อโปรโตคอลเพื่อตรวจสอบว่าควรใช้ plink.exe สำหรับการเชื่อมต่อและโปรแกรมจะใช้ชื่อเซสชันsocks_proxyเพื่อระบุว่ามีพร็อกซีอยู่หรือไม่ โปรดจำไว้ว่าควรป้อนPATH_TO_PLINKด้วยเครื่องหมายทับไม่ใช่ด้วยเครื่องหมายทับขวา ตัวอย่างสำหรับโอกาสเมื่อ plink.exe จะอยู่ในโฟลเดอร์ C: \ Program Files \ Putty: SSH = C: / Program Files / สีโป๊ว / plink.exe -load socks_proxy


1

คุณอาจจะให้tsocksลอง ด้วย tsocks คุณกำหนดค่าให้ใช้การตั้งค่าพร็อกซี SOCKS SSH แล้วเรียกใช้ svn ดังนี้:

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