#!/bin/blog

May 17, 2008

Subversion+SSH über verschiedene SSH-Tunnel

Filed under: UNIX & Linux — Tags: — martin @ 8:07 am

Auf dem Server “duplo” im World Headquarter meiner kleinen Firma befindet sich unter /opt/svn ein Subversion-Repository. Neben dem Server steht eine Workstation namens “hanuta”, von der aus ich das Repository unter dem folgenden URL nutze: svn+ssh://duplo/opt/svn

Gleichzeitig besitze ich auch noch einen Laptop namens “rafaello”. Mit diesem bin ich immer in anderen Umgebungen unterwegs. Mal bin ich im Büro und kann direkt mit “duplo” reden, mal bin ich in der weiten Welt unterwegs und erreiche “duplo” über meinen DSL-Jumpserver in der Büro-DMZ, und manchmal bin ich beim Kunden und muß dort noch zusätzlich über einen SSH-Server in der DMZ des Kunden springen.

Um “duplo” auf diesen unterschiedlichen Wegen zu erreichen, habe ich eine ~/.ssh/config mit entsprechenden Host-Einträgen, in denen das jeweils passende ProxyCommand (darum soll es hier nicht gehen) aufgerufen wird:

  • Ich tippe ssh duplo, wenn ich im Büro bin,

  • ssh duplo-mobil, wenn ich unterwegs bin und
  • ssh duplo-kunde, wenn ich beim jeweiligen Kunden bin.

Das Problem war nun, daß ich nicht wußte, wie ich mit dem ausgecheckten SVN-Repository umgehen sollte. Wenn ich im Büro ausgecheckt hatte und von unterwegs etwas einchecken wollte, mußte ich das Repository mit svn switch --relocate umschalten:
svn switch --relocate svn+ssh://duplo/opt/svn svn+ssh://duplo-mobil/opt/svn
Das hat irgendwie immer nur ein-bis zweimal funktioniert. Danach war die Arbeitskopie irgendwann in schwer nachvollziehbarer Weise verhunzt.

Glücklicherweise unterstützt SVN einen eigenen Tunneling-Mechanismus, der sehr gut mit dem ProxyCommand von SSH vergleichbar ist. Standardmäßig verwendet svn+ssh:// den Befehl ssh für den Zugriff aufs Repository. Dieser Aufruf von ssh kann mittels der Umgebungsvariable $SVN_SSH durch einen anderen ersetzt werden. Also z.B. wie folgt:

export SVN_SSH="ssh -A duplo-mobil ssh"

Der Sicht aufs Repository erfolgt dann über localhost: svn info svn+ssh://localhost/opt/svn – In Wirklichkeit heißt das, daß eine Verbindung zu duplo-mobil aufgebaut wird, und von dort eine SSH-Verbindung auf den Host aus dem URL aufgebaut wird. In diesem Fall ist das passenderweise localhost. Es könnte aber auch svn info svn+ssh://duplo/opt/svn dort stehen, denn duplo kann ohne Probleme eine SSH-Verbindung zu duplo selbst aufbauen, oder eben zu localhost.

Der gegenwärtige Aufenthaltsort im Netz kann somit über die Umgebungsvariable $SVN_SSH ausgewählt werden. Das Repository wird dabei unverändert über localhost erreicht. (Hierbei sollte nicht vergessen werden, daß es sich bei diesem localhost nicht um den eigenen Rechner handelt, von dem ein Port weitergeleitet wird, o.ä., sondern um den localhost aus Sicht des Servers, auf dem das SVN-Repository liegt.)

About these ads

3 Comments »

  1. Das ist das erste SSH-Tutorial bei dem ich Hunger bekommen habe.

    Comment by Joern — May 17, 2008 @ 7:32 pm

  2. [...] martin @ 3:34 pm Ganz unschuldig spielte ich heute früh ein wenig mit Subversion, der erwähnten SSH-Tunnelung und SCPlugin herum, als das Macbook plötzlich komplett und ohne Zugriff auf die üblichen [...]

    Pingback by Gestrichen Voll « #!/bin/blog — June 5, 2008 @ 3:35 pm

  3. [...] lange, wie ich keinen X-Server brauche. Wirklich tolle Hacks mit Marco Polo in Zusammenarbeit mit SSH und SVN wie unter MacOS kann man unter “Windows” ebenfalls glatt vergessen. Daran kann auch das [...]

    Pingback by Sakrileg « #!/bin/blog — August 19, 2008 @ 7:34 pm


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

The Shocking Blue Green Theme. Blog at WordPress.com.

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: