Ssh tunnel ile subversion için proxy ayarını nasıl yapabilirim?


24

Yerel bağlantım yavaş olduğu için kodu proxy üzerinden kontrol etmek / güncellemek istiyorum. Ssh tunnel'i kurdum: ssh -D 8090 user@ssh.proxy.net bütün paketleri localhost'a iletmek için: 8090.

Bunu kullanmak için subversion'u nasıl ayarlayabilirim?

ssh  svn  proxy 

+1, iyi soru. Bunu da yapmanın bir yolu olup olmadığını görmekle ilgileniyorum. Çok yavaş bir kablosuz ağa sahibim ve sıklıkla aynı şekilde ayarlanmış bir SOCKS proxy'sine göz attığımda, yıkımın (veya başkalarının) aynı şekilde kullanılması yararlı olacaktır.
Tim Post

Ve vekil wi-fi daha hızlı yapar?
innaM

Yanıtlar:


21

SSH sunucunuzu tünelleyen yerel bir SOCKS sunucusu kurmak için SSH kullanıyorsunuz. Bunu yapma nedeninizin "yerel bağlantı yavaş" olduğunu söylüyorsunuz, ancak SSH sunucusuna tünel açmanın daha hızlı nasıl olacağını göremiyorum.

Neyse, senin problemin Subversion'ın bir HTTP proxy veya SSH tüneli üzerinden bağlanabilmesi, ancak SOCKS hakkında hiçbir fikri yok. Bu yüzden tüm TCP bağlantılarını yakalayarak ve onları SOCKS proxy'sine yönlendirerek SOCKSify Subversion'a ihtiyacınız var.

Bunu daha önce yapmış olanların ifadesi yerine, detaylı açıklamalarına işaret edeceğim:

Veya kısaca Oliver'ın sayfasından biraz daha kesilmiş bir şekilde:

Debian, sourceforge'da da bulunan iki çorapçı içerir. En son güncellenen olan ProxyChains ve yapılandırılması oldukça basittir. Çorapların çoğu benzer şekilde çalışır, bu nedenle bu talimatların makul bir genel durum olması gerekir. ProxyChains'i yapılandırmak için $ (HOME) /. Proxychains / proxychains.conf dosyasını yalnızca aşağıdaki satırlara sahip olacak şekilde düzenlemeniz gerekir:

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

Daha sonra yapmanız gereken tek şey ProxyChains'te 'svn'.

proxychains svn commit

Yukarıdaki örnekte, svn uygulaması, TCP'nin Subversion sunucusuna bağlandığı bilge hiçbiri SOCKS proxy'nize yönlendirilmemiştir. "


Teşekkürler, bu benim için işe yarıyor. OS X kullanıyorsanız ve DNS iletmeye ihtiyacınız varsa, bu proxychain çatalı kullanın. github.com/haad/proxychains ve 'proxy_dns' satırının ilk satırdan sonra config dosyasında olduğundan emin olun.
Gourneau

2

Bunu yapmak için daha az çamur y-yolunu bulduğum için buraya gönderiyorum. Sen kullanabilirsiniz Polipo yapılandırmasına aşağıdaki satırları ekleyerek, HTTP proxy üzerinden SSH SOCKS tüneli kullanmak:

socksParentProxy = "localhost:8090"
socksProxyType = socks5

polipovarsayılan olarak bağlantı noktasında dinleyin 8123. Ve daha sonra $HOME/.subversion/serverssizin arşivinizi konak (ler) olarak adlandırılır eğer örneğin dan kontrol etmek istiyorum yıkılma ana bilgisayarları için bir grup oluşturabilir proj1.svn.domain.tld, proj2.svn.domain.tldvb sonra aşağıdakileri ekleyin [groups]bölümünde:

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

Ve son olarak, gruba bir blok ekleyerek yeni eklediğiniz ana bilgisayar grubu için bir proxy yapılandırması belirleyin:

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

Bundan sonra, SSH tüneli olmadan çalışmakta olduğunuz gibi normal olarak depo üzerinde çalışabilmelisiniz.

HTH


"Localhost: 8090" ne için?
Deqing

@Deqing, polipo tarafından yukarı akış olarak kullanılan SOCKS proxy'si.
Ashish SHUKLA

1

Tünel açmayı bilmiyorum ssh -Dama bunun gibi bir şey kullanmak

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

Daha sonra tünelin açık olduğu belirli bir port ile subversiyona yeni bir protokol ekleyerek tünel açabilirsiniz. Yani, ~ / .subversion / config gibi bir satır ekleyin

pssh = ssh -p8090

içinde [tunnels]bölümü ve daha sonra yerine svn + SSH: //user@original.com kullanımı svn + pssh: // kullanıcı @ linuxmachine

Mevcut bir çalışma kopyasına sahipseniz kullanabilirsiniz.

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

adresi değiştirmek için, çalışma kopyası yeni bir ödeme yapmanıza gerek kalmadan bağlanır.


Tam olarak yakalayamıyorum. Varsayalım: Ben başlangıçta ödeme: svn co svn: //code.somewhere.com/prj prj Ve şimdi ne yapabilirim? Temel olarak ne demek istediğinizi gerçekten anlayamıyorum: "svn + ssh: //user@ssh.proxy.net yerine". Thanks

svn co svn+ssh://code.somewhere.com/prj prjprj/svn switch --relocate svn+ssh://code.somewhere.com svn+pssh://localhost/svn co svn+pssh://localhost/prj prj
Alınan

Belki bir yerlerde yanlış anladık. Aslında yerel bilgisayarıma A sunucusundaki kodu B sunucusundan (ssh-D 8090 kullanıcısı @ B) sunucuya kodlamak istiyorum, bu mümkün mü? svn co svn + pssh: // localhost / prj prj, size ulaşamadığım sürece, sadece bir tane B sunucusunu kontrol eder.

Bunu bildiğim ssh tünelleme ile ele almak için güncellendi. Doğru anlarsam, "ssh -L8090: serverA.com: 22 user@serverB.com" ve sonra "svn co svn + pssh: // kullanici @ localhost / prj prj" kullanmanız kodunuzdaki A sunucusundaki kodu kontrol edecektir. makine, sunucu B aracılığıyla
blahdiblah

Ah! Sanırım kargaşanın nerede olabileceğini gördüm. Tüneli ayarlamak proxy sunucusunda bir kabuk başlatır, ancak svn komutlarının olduğu yer burası değildir. Bunlar bilgisayarınızda ayrı bir kabukta gerçekleşmelidir. Ssh için -f bayrağı aynı kabuğun kullanımına izin verebilir.
blahdiblah

1

~ / .Subversion / varsayılan yapılandırma dosyalarına bakın / Yorum yapan birçok faydalı örnek var. Proxy'ler ~ / .subversion / server dizininde kurulurdu.


1

Windows PC'de çorap proxy sunucusu üzerinden SVN deposuna svn + ssh bağlantısı alması gereken durumlar vardır . Bu sorun SSH işlevselliği sağlayan ve farklı proxy tipleri ile çalışabilen Putty ile çözülebilir. Önerilen çözüm, yerel bağlantı noktası iletme gerektirmez.

  1. Macunu açın ve bir oturum oluşturun (örn. Socks_proxy)
  2. Proxy ana bilgisayar adını ve Bağlantı Noktası'nı göndermek için gereken SADECE proxy'yi oturum için (Bağlantı-> Proxy) yapılandırın . Macun, hem SOCKS4 hem de SOCKS5 dahil olmak üzere farklı vekil tiplerinin seçimi ile çalışır. İsteğe bağlı olarak proxy erişimi için kullanıcı adı ve parola sağlayabilirsiniz.
  3. Oturumu kaydedin. Lütfen bu oturumun bağlantı için yapılandırılmış bir Ana Bilgisayar Adı olmayacağını unutmayın .
  4. SVN konfigürasyon dosyasını açın Application Data \ Subversion \ config ve [tunnels] bölümünü bulun
  5. Bölüm başlığının altına ek SVN protokolü açıklaması ekleyin : ssh = PATH_TO_PLINK / PLINK.EXE - load socks_proxy . Aslında protokol adı sizin seçiminizdir, yani ssh zaten kullanılmışsa herhangi bir adı seçebilirsiniz (örneğin , ssh = yerine pssh = kullanın ).
  6. SSH'nin svnserve komutunu çalıştırmak için SSH'nin kullanılacağı hedef sunucuya erişim için anahtarı yapılandırın . Anahtarları korumak için alayı kullanmanız önerilir.
  7. Svn + ssh erişimi için svn kullanın. Kullanıcı adı URL - svn ls svn + protokol_adı : // username @ server / repository'de geçirilmelidir, burada protokol adı SVN yapılandırmasının [tunnels] bölümünde kullanılan gerçek adla değiştirilmelidir .

Ne var - SVN, plink.exe'nin bağlantı için kullanılması gerektiğini tespit etmek için protokol adını kullanacak ve plink, proxy'nin mevcut olduğunu tanımlamak için socks_proxy oturum adını kullanacaktır . PATH_TO_PLINK'in ters eğik çizgi ile değil eğik çizgi ile girilmesi gerektiğini unutmayın . Plink.exe klasörünün C: \ Program Files \ Putty: ssh = C: / Program Files / Putty / PLINK.EXE - load socks_proxy klasörüne yerleştirildiği durumlar için örnek .


1

Bir kaç kere deneyebilirsin. Tsocks ile, SOCKS proxy SSH setlerini kullanacak ve sonra svn komutunu çalıştıracak şekilde yapılandırın:

tsocks svn co {etc...}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.