Bagaimana saya bisa mengatur proxy untuk subversi dengan ssh tunnel?

24

Saya ingin memeriksa / memperbarui kode melalui proxy karena koneksi lokal saya lambat. Saya mengatur ssh tunnel: ssh -D 8090 [email protected] untuk meneruskan semua paket ke localhost saya: 8090.

Bagaimana saya bisa mengatur subversi untuk menggunakan ini?


sumber
1, baik pertanyaan. Saya tertarik melihat apakah ada cara untuk melakukan ini juga. Saya memiliki wi-fi yang sangat lambat dan sering menelusuri melalui proxy SOCKS yang diatur dengan cara yang sama, akan sangat berguna untuk memiliki subversi (atau yang lain) menggunakan hal yang sama.
Tim Post
Dan proxy membuat Anda wi-fi lebih cepat?
innaM

Jawaban:

21

Anda menggunakan SSH untuk mengatur server SOCKS lokal yang terowongan ke server SSH Anda. Anda menyebutkan bahwa alasan Anda melakukan itu adalah bahwa "koneksi lokal lambat" tetapi saya gagal melihat bagaimana melakukan tunneling ke server SSH akan membuatnya lebih cepat.

Bagaimanapun, masalah Anda adalah bahwa Subversion dapat terhubung melalui proksi HTTP atau terowongan SSH, tetapi tidak tahu tentang SOCKS. Jadi Anda perlu SOCKSify Subversion dengan menangkap semua koneksi TCP-nya dan mengarahkan mereka ke proksi SOCKS.

Alih-alih memparafrasekan mereka yang telah melakukannya sebelumnya, saya akan mengarahkan Anda ke penjelasan rinci mereka:

Atau singkatnya sebagian besar dipotong dari halaman Oliver:

Debian berisi dua socksifiers yang juga tersedia di sourceforge. Yang paling baru-baru ini diperbarui adalah ProxyChains, dan cukup mudah untuk dikonfigurasikan. Kebanyakan socksifiers bekerja dengan cara yang serupa sehingga instruksi ini harus menjadi kasus umum yang masuk akal. Untuk mengkonfigurasi ProxyChains, Anda hanya perlu mengedit $ (HOME) /. Proxychains / proxychains.conf untuk hanya memiliki baris berikut:

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

Yang perlu Anda lakukan adalah 'membungkus' svn di ProxyChains.

proxychains svn commit

Dalam contoh di atas, aplikasi svn sama sekali tidak bijaksana karena TCP terhubung ke server Subversion dialihkan ke proksi SOCKS Anda. "

Jean-Marc Liotier
sumber
Terima kasih banyak ini bekerja untuk saya. Jika Anda menggunakan OS X dan membutuhkan penerusan DNS, maka gunakan garpu proxy ini. github.com/haad/proxychains dan pastikan baris 'proxy_dns' ada di konfigurasi setelah baris pertama.
Gourneau
2

Posting di sini, karena saya menemukan cara yang kurang kludge-y untuk melakukan ini. Anda dapat menggunakan Polipo untuk menggunakan terowongan SSH SOCKS Anda melalui proxy HTTP, dengan menambahkan baris berikut ke konfigurasinya:

socksParentProxy = "localhost:8090"
socksProxyType = socks5

poliposecara default mendengarkan pada port 8123. Dan kemudian di $HOME/.subversion/serversmembuat grup untuk subversi host Anda ingin memeriksa dari, misalnya jika tuan rumah repositori subversi Anda (s) diberi nama proj1.svn.domain.tld, proj2.svn.domain.tld, dll, kemudian tambahkan berikut untuk [groups]bagian:

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

Dan akhirnya tentukan konfigurasi proxy untuk grup host yang baru saja Anda tambahkan dengan menambahkan blok untuk grup:

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

Setelah ini, Anda seharusnya dapat beroperasi di repositori secara normal, seperti sebelumnya Anda bekerja tanpa terowongan SSH.

HTH

Ashish SHUKLA
sumber
Untuk apa "localhost: 8090"?
Deqing
@Deqing itu adalah proksi SOCKS yang digunakan oleh polipo sebagai upstreamnya.
Ashish SHUKLA
1

Saya tidak tahu tentang tunneling ssh -Dtetapi menggunakan sesuatu seperti

ssh -L8090:svn.server.com:22 [email protected]

Anda kemudian dapat melakukan tunneling dengan menambahkan protokol baru ke subversi dengan port tertentu di mana tunnel aktif. Jadi, di ~ / .subversion / config tambahkan baris seperti

pssh = ssh -p8090

di [tunnels]bagian dan kemudian bukannya svn + ssh: //[email protected] penggunaan svn + pssh: // user @ localhost

Jika Anda memiliki copy pekerjaan yang sudah ada, Anda dapat menggunakan

svn switch --relocate svn+ssh://[email protected] svn+pssh://user@localhost

untuk mengganti alamat, copy pekerjaan terhubung dengan tanpa harus melakukan checkout baru.

blahdiblah
sumber
Saya tidak bisa menangkapnya. Asumsikan: Saya awalnya checkout dengan: svn co svn: //code.somewhere.com/prj prj Dan apa yang bisa saya lakukan sekarang? Pada dasarnya saya tidak bisa benar-benar mengerti apa yang Anda maksud dengan: "bukannya svn + ssh: //[email protected]". Terima kasih
Jika Anda memiliki salinan yang berfungsi svn co svn+ssh://code.somewhere.com/prj prj, maka masuk prj/dan berjalan svn switch --relocate svn+ssh://code.somewhere.com svn+pssh://localhost/akan memperbarui wc agar terlihat seolah-olah telah melaluisvn co svn+pssh://localhost/prj prj
blahdiblah
Mungkin kita salah paham di suatu tempat. Sebenarnya saya ingin memeriksa kode pada server A melalui server B (ssh -D 8090 user @ B) ke mesin lokal saya, apakah ini layak? svn co svn + pssh: // localhost / prj prj tampaknya hanya checkout kode satu server B kecuali saya tidak mendapatkan Anda.
Saya telah memperbarui untuk mengatasi ini dengan ssh tunneling yang saya tahu. Jika saya mengerti benar, menggunakan "ssh -L8090: serverA.com: 22 [email protected]" dan kemudian "svn co svn + pssh: // user @ localhost / prj prj" akan memeriksa kode dari server A pada Anda mesin, melalui server B.
blahdiblah
Ah! Saya pikir saya melihat di mana kebingungan mungkin. Menyiapkan terowongan memulai shell pada server proxy, tetapi ini bukan tempat perintah svn terjadi. Itu harus terjadi di shell terpisah di komputer Anda. Bendera -f untuk ssh memungkinkan penggunaan shell yang sama.
blahdiblah
1

Lihatlah file konfigurasi default di ~ / .subversion / Ada banyak contoh berguna yang dikomentari. Proxy akan diatur di ~ / .subversion / server

Gleb
sumber
1

Ada kalanya diperlukan pada PC Windows untuk mendapatkan koneksi svn + ssh ke repositori SVN melalui server proxy kaus kaki . Masalah ini dapat diatasi dengan Putty yang menyediakan fungsionalitas SSH dan dapat bekerja dengan berbagai jenis proxy. Solusi yang diusulkan tidak memerlukan penerusan port lokal.

  1. Luncurkan dempul dan buat sesi (misalnya socks_proxy)
  2. Konfigurasikan HANYA proksi untuk sesi (Koneksi-> Proxy) di mana diperlukan untuk mengirimkan Proxy hostname dan Port . Putty berfungsi dengan pemilihan jenis proxy yang berbeda termasuk SOCKS4 dan SOCKS5. Secara opsional, Anda dapat memberikan nama pengguna dan kata sandi untuk akses proxy.
  3. Simpan sesi. Harap diingat bahwa sesi tidak akan memiliki Nama Host yang terkonfigurasi untuk koneksi.
  4. Buka file konfigurasi SVN Data Aplikasi \ Subversion \ config dan cari bagian [terowongan]
  5. Masukkan deskripsi protokol SVN tambahan di bawah judul bagian: ssh = PATH_TO_PLINK / PLINK.EXE-load socks_proxy . Sebenarnya nama protokol adalah pilihan Anda sehingga Anda dapat memilih nama apa pun jika ssh sudah digunakan (mis. Gunakan pssh = bukan ssh = ).
  6. Konfigurasikan kunci untuk akses SSH ke server target di mana SSH akan digunakan untuk menjalankan svnserve . Dianjurkan untuk menggunakan kontes untuk mempertahankan kunci.
  7. Gunakan svn untuk akses svn + ssh. Nama pengguna harus diberikan di URL - svn ls svn + protocol_name : // username @ server / repository di mana nama protokol harus diganti dengan nama asli yang digunakan di bagian [terowongan] konfigurasi SVN.

Apa itu - SVN akan menggunakan nama protokol untuk mendeteksi bahwa plink.exe harus digunakan untuk koneksi dan plink akan menggunakan nama sesi socks_proxy untuk mengidentifikasi bahwa ada proxy. Ingat bahwa PATH_TO_PLINK harus dimasukkan dengan garis miring, bukan dengan garis miring terbalik. Contoh kejadian ketika plink.exe terletak di folder C: \ Program Files \ Putty: ssh = C: / Program Files / Putty / PLINK.EXE-load socks_proxy .


sumber
1

Anda mungkin mencoba tsocks . Dengan tsocks, Anda mengonfigurasinya untuk menggunakan proxy SOCKS yang diset SSH kemudian jalankan svn seperti:

tsocks svn co {etc...}
Xorlev
sumber