SVN+SSH

March 19th, 2010 by author Leave a reply »

Will man auf seinem Webserver Subversion nutzen und mißtraut dem Netz, so muss man sich um eine Verschlüsselung kümmern. Hierfür bietet sich Subversion über Secure Shell (svn+ssh) an. Das Tutorial zeigt, welche Einstellungen man auf dem Server und Client vornehmen muss, um SVN über SSH nutzen zu können.

Server

Voraussetzungen

In diesem Tutorial wird nicht beschrieben, wie man Subversion oder SSH installiert; es sind jedoch Voraussetzungen für das Gelingen der SVN über SSH Verbindung.

Ein Schlüsselpaar generieren

Zuerst müssen wir ein Schlüsselpaar generieren, damit wir später nicht für jedes SVN-Kommando das Loginpasswort eingeben müssen. Dazu führen wir auf dem *NIX-System folgenden Befehl aus, der eine Installation von openssh voraussetzt.

ssh-keygen -b 1024 -t dsa -N <passwort> -f <filename>
muss durch ein Passwort ersetzt werden und durch einen filenamen, der z.B. dem usernamen entspricht.

Schlüssel dem SSHD näher bringen

Voraussetzungen

Zuerst muss man prüfen, dass der SSHD korrekt konfiguriert ist. Hierzu schauen wir uns die sshd.conf an (z.B. unter /etc/sshd.conf, bzw. /etc/ssh/sshd.conf). Hier müssen folgende Werte auf jeden Fall gesetzt sein:

PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys

Sollte es später Probleme geben, dann sollte man evtl. noch nach AllowedUsers ausschau halten. Hat man Probleme mit der Authentifizierung, dann könnte es auch helfen den LogLevel hochzusetzen (oder runter je nach Perspektive :)), z.B. auf DEBUG.

Öffentlichen Schlüssel eintragen

Nachdem die Schlüssel generiert sind, muss man Sie in ~/.ssh/authorized_keys eintragen. Dazu führt man folgenden Befehl aus:

cat <filename>.pub >> ~/.ssh/authorized_keys

Wenn die Option StrictModes in sshd.conf aktiviert ist, dann sollte man die Datei noch dem User geben und die Rechte entsprechend setzen.

chown `whoami` ~/.ssh/authorized_keys
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Subversion starten

Damit der SSHD das notwendige Tool gleich startet, wenn man sich mit TortoiseSVN verbindet, muss man die ~/.ssh/authorized_keys anpassen.

command="svnserve -t -r  --tunnel-user=",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty 

Diesen Eintrag schreibt man vor dem schon vorhandenen Public-Key-Eintrag, so dass danach mit der Zeichenfolge ssh- weitergehen sollte.
Hinweis: Durch den Parameter -r gibt man bereits den Pfad zu dem Repository an. Wenn man sich später verbindet, muss man nicht mehr den langen Pfad im Verbindungsstring angeben sondern nur noch /.

Repository anlegen

Hat man unter einen Pfad eingetragen, so muss man mit svnadmin diesen noch für ein Repository vorbereiten.

svnadmin create 

Auf der Serverseite ist nun alles entsprechend vorbereitet. Wenn man die Konfiguration sshd.conf verändert hat, dann sollte man natürlich den Daemon neu starten. Wenn es Probleme gibt, dann hilft die auth.log weiter.

Client

Auf der Clientseite benötigt man TortoisSVN und Putty (Putty, PuttyGen und Pageant).

Privater Schlüssel

Zu aller erst lädt man sich den Privaten Schlüssel vom Server herunter, den man oben mit ssh-keygen generiert hat. Nun startet man das Programm PuttyGen und wählt den Menupunkt “Conversion” -> “Import Key” und gibt den Pfad zum heruntergeladenen Schlüssel an. Nachdem alles erfolgreich ist, speichert man den Schlüssel mittels “Save Privatey Key” unter .pkk. Dieser Schritt ist notwendig, weil es keinen Standard für private Schlüssel gibt und PuttyGEN generiert aus dem Schlüssen das für Putty notwendige PKK-File.

Putty

Nun startet man Putty und gibt zu allererst den Hostnamen des Zielhosts an, dann unter Auth->SSH->Key den privaten Schlüssel und speichert diese Session z.B. unter svn1 ab (ab diesem Punkt verweisen wir auf den Namen svn1; wählt man einen anderen, muss man diesen entsprechend ersetzen).

Putty Pageant

Wofür braucht man nun den (die/das) Pageant? Der Pageant erleichtert die Arbeit mit SVN über SSH in dem es den privaten Schlüssel cached und man das Passwort nur einmal pro Session eingeben muss. Wenn man SVN über SSH regelmäßig nutzt, dann sollte man Pageant beim Windows Start mitstarten lassen.

TortoiseSVN

Wenn man nun nach einer Repository URL gefragt wird, dann lautet diese wie folgt:

svn+ssh://@svn1:/

Wie man an dem String erkennen kann, gibt man hier nirgendwo den eigentlichen Hostnamen an (der normalerweise hinter dem @ steht); dies liegt daran, dass der TortoiseSVN teile von Putty nutzt und der Name svn1 über die Saved Session im Putty aufgelöst wird. Da wir bereits alle notwendigen Daten eingetragen haben, kann man nun mit TortoiseSVN über SSH arbeiten.

VN:F [1.9.22_1171]
Rating: 5.5/10 (2 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 2 votes)
SVN+SSH, 5.5 out of 10 based on 2 ratings
Advertisement

Leave a Reply