Comment puis-je définir un proxy pour subversion avec ssh tunnel?

24

Je souhaite extraire / mettre à jour le code via un proxy car ma connexion locale est lente. J'ai configuré le tunnel ssh: ssh -D 8090 [email protected] pour transférer tous les paquets vers mon hôte local: 8090.

Comment puis-je configurer subversion pour l'utiliser?


la source
+1, bonne question. Je suis intéressé à voir s'il y a un moyen de le faire aussi. J'ai une connexion Wi-Fi très lente et je navigue souvent via un proxy SOCKS configuré de la même manière, il serait pratique que Subversion (ou d'autres) l'utilise.
Tim Post
Et le proxy rend votre Wi-Fi plus rapide?
innaM

Réponses:

21

Vous utilisez SSH pour configurer un serveur SOCKS local qui tunnelise vers votre serveur SSH. Vous mentionnez que votre raison pour cela est que "la connexion locale est lente" mais je ne vois pas comment le tunneling vers un serveur SSH le rendra plus rapide.

Quoi qu'il en soit, votre problème est que Subversion peut se connecter via un proxy HTTP ou un tunnel SSH, mais il n'a aucune idée de SOCKS. Vous devez donc SOCKSify Subversion en capturant toutes ses connexions TCP et en les redirigeant vers le proxy SOCKS.

Au lieu de paraphraser ceux qui l'ont déjà fait, je vais vous indiquer leurs explications détaillées:

Ou en un mot, principalement coupé et badigé de la page d'Oliver:

Debian contient deux socksifiers qui sont également disponibles sur sourceforge. La dernière mise à jour est ProxyChains, et sa configuration est assez simple. La plupart des chaussettes fonctionnent de manière similaire, ces instructions doivent donc être un cas général raisonnable. Pour configurer ProxyChains, il vous suffit de modifier $ (HOME) /. Proxychains / proxychains.conf pour n'avoir que les lignes suivantes:

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

Tout ce que vous avez à faire ensuite est de «wrap» svn dans ProxyChains.

proxychains svn commit

Dans l'exemple ci-dessus, l'application svn n'était pas plus sage que ses connexions TCP au serveur Subversion étaient redirigées vers le bas de votre proxy SOCKS. "

Jean-Marc Liotier
la source
Merci beaucoup, cela fonctionne pour moi. Si vous êtes sous OS X et avez besoin d'une redirection DNS, utilisez ce fork de la chaîne proxy. github.com/haad/proxychains et assurez-vous que la ligne 'proxy_dns' est dans la configuration après la première ligne.
Gourneau
2

Publier ici, car j'ai trouvé un moyen moins compliqué de le faire. Vous pouvez utiliser Polipo pour utiliser votre tunnel SSH SOCKS sur proxy HTTP, en ajoutant les lignes suivantes à sa configuration:

socksParentProxy = "localhost:8090"
socksProxyType = socks5

polipoécouter par défaut sur le port 8123. Et puis en $HOME/.subversion/serverscréer un groupe pour les hôtes de subversion que vous voulez vérifier à partir, par exemple si votre hôte dépôt subversion (s) sont nommés proj1.svn.domain.tld, proj2.svn.domain.tldetc., puis ajoutez ce qui suit à la [groups]section:

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

Et enfin, spécifiez une configuration proxy pour le groupe des hôtes que vous venez d'ajouter en ajoutant un bloc pour le groupe:

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

Après cela, vous devriez pouvoir fonctionner normalement sur le référentiel, car vous travailliez sans tunnel SSH.

HTH

Ashish SHUKLA
la source
À quoi sert "localhost: 8090"?
Deqing
@Deqing c'est le proxy SOCKS qui est utilisé par polipo comme son amont.
Ashish SHUKLA
1

Je ne connais pas le tunneling ssh -Dmais j'utilise quelque chose comme

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

Vous pouvez ensuite faire du tunneling en ajoutant un nouveau protocole à subversion avec le port particulier sur lequel le tunnel est. Donc, dans ~ / .subversion / config ajoutez une ligne comme

pssh = ssh -p8090

dans la [tunnels]section puis au lieu de svn + ssh: //[email protected] utilisez svn + pssh: // user @ localhost

Si vous avez une copie de travail existante, vous pouvez utiliser

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

pour changer l'adresse à laquelle la copie de travail est liée sans avoir à effectuer une nouvelle extraction.

blahdiblah
la source
Je ne peux pas vraiment attraper. Supposons que j'ai à l'origine commander avec: svn co svn: //code.somewhere.com/prj prj Et que puis-je faire maintenant? Fondamentalement, je ne peux pas vraiment comprendre ce que vous entendez par: "au lieu de svn + ssh: //[email protected]". Merci
Si vous avez obtenu une copie de travail svn co svn+ssh://code.somewhere.com/prj prj, alors entrer prj/et exécuter svn switch --relocate svn+ssh://code.somewhere.com svn+pssh://localhost/mettra à jour le wc pour qu'il semble avoir été obtenu viasvn co svn+pssh://localhost/prj prj
blahdiblah
Peut-être que nous nous méprenons quelque part. En fait, je veux vérifier le code sur le serveur A via le serveur B (utilisateur ssh -D 8090 @ B) sur ma machine locale, est-ce possible? svn co svn + pssh: // localhost / prj prj semble simplement extraire le code du serveur B, sauf si je ne vous comprends pas.
J'ai mis à jour pour résoudre ce problème avec le tunneling ssh que je connais. Si je comprends bien, en utilisant "ssh -L8090: serverA.com: 22 [email protected]" puis "svn co svn + pssh: // user @ localhost / prj prj" vérifiera le code du serveur A sur votre machine, via le serveur B.
blahdiblah
Ah! Je pense que je vois où pourrait être la confusion. La configuration du tunnel démarre un shell sur le serveur proxy, mais ce n'est pas là que les commandes svn se produisent. Ceux-ci devraient se produire dans un shell séparé sur votre ordinateur. L'indicateur -f pour ssh peut permettre l'utilisation du même shell.
blahdiblah le
1

Regardez les fichiers de configuration par défaut dans ~ / .subversion / Il existe de nombreux exemples utiles commentés. Les proxys seraient configurés dans ~ / .subversion / servers

Gleb
la source
1

Il y a des occasions où il est nécessaire sur un PC Windows d'obtenir une connexion svn + ssh au référentiel SVN via le serveur proxy socks . Ce problème peut être résolu avec Putty qui fournit des fonctionnalités SSH et peut fonctionner avec différents types de proxy. La solution proposée ne nécessite pas de redirection de port locale.

  1. Lancer du mastic et créer une session (par exemple socks_proxy)
  2. Configurez UNIQUEMENT le proxy pour la session (Connexion-> Proxy) où il est nécessaire de soumettre le nom d'hôte et le port du proxy . Putty fonctionne avec une sélection de différents types de proxy, y compris SOCKS4 et SOCKS5. En option, vous pouvez fournir un nom d'utilisateur et un mot de passe pour l'accès proxy.
  3. Enregistrez la session. N'oubliez pas que la session n'aura pas de nom d'hôte configuré pour la connexion.
  4. Ouvrez le fichier de configuration SVN Application Data \ Subversion \ config et recherchez la section [tunnels]
  5. Mettez une description supplémentaire du protocole SVN sous le titre de la section: ssh = PATH_TO_PLINK / PLINK.EXE -load socks_proxy . En fait, le nom du protocole est votre choix, vous pouvez donc choisir n'importe quel nom si ssh est déjà utilisé (par exemple, utilisez pssh = au lieu de ssh = ).
  6. Configurez la clé pour l'accès SSH au serveur cible où SSH sera utilisé pour exécuter svnserve . Il est recommandé d'utiliser pageant pour conserver les clés.
  7. Utilisez svn pour l'accès svn + ssh. Le nom d'utilisateur doit être passé dans l'URL - svn ls svn + protocol_name : // username @ server / repository où le nom du protocole doit être remplacé par le vrai nom utilisé dans la section [tunnels] de la configuration SVN.

Qu'est-ce que c'est - SVN utilisera le nom du protocole pour détecter que plink.exe doit être utilisé pour la connexion et plink utilisera le nom de session socks_proxy pour identifier la présence du proxy. N'oubliez pas que PATH_TO_PLINK doit être entré avec une barre oblique, pas avec une barre oblique inverse. Exemple de cas où plink.exe se trouve dans le dossier C: \ Program Files \ Putty: ssh = C: / Program Files / Putty / PLINK.EXE -load socks_proxy .


la source
1

Vous pourriez essayer les tsocks . Avec tsocks, vous le configurez pour utiliser les configurations SSH du proxy SOCKS puis exécutez svn comme ceci:

tsocks svn co {etc...}
Xorlev
la source