{"id":214,"date":"2010-03-19T06:50:04","date_gmt":"2010-03-19T05:50:04","guid":{"rendered":"http:\/\/www.webmaid.de\/?p=214"},"modified":"2010-03-19T07:22:35","modified_gmt":"2010-03-19T06:22:35","slug":"svn_ssh","status":"publish","type":"post","link":"https:\/\/www.webmaid.de\/2010\/03\/svn_ssh\/","title":{"rendered":"SVN+SSH"},"content":{"rendered":"

Will man auf seinem Webserver Subversion nutzen und mi\u00dftraut dem Netz, so muss man sich um eine Verschl\u00fcsselung k\u00fcmmern. Hierf\u00fcr bietet sich Subversion \u00fcber Secure Shell (svn+ssh) an. Das Tutorial zeigt, welche Einstellungen man auf dem Server und Client vornehmen muss, um SVN \u00fcber SSH nutzen zu k\u00f6nnen.
\n<\/p>\n

Server<\/h2>\n

Voraussetzungen<\/h3>\n

In diesem Tutorial wird nicht beschrieben, wie man Subversion oder SSH installiert; es sind jedoch Voraussetzungen f\u00fcr das Gelingen der SVN \u00fcber SSH Verbindung.<\/p>\n

Ein Schl\u00fcsselpaar generieren<\/h3>\n

Zuerst m\u00fcssen wir ein Schl\u00fcsselpaar generieren, damit wir sp\u00e4ter nicht f\u00fcr jedes SVN-Kommando das Loginpasswort eingeben m\u00fcssen. Dazu f\u00fchren wir auf dem *NIX-System folgenden Befehl aus, der eine Installation von openssh voraussetzt.<\/p>\n

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

Schl\u00fcssel dem SSHD n\u00e4her bringen<\/h3>\n

Voraussetzungen<\/h4>\n

Zuerst muss man pr\u00fcfen, 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\u00fcssen folgende Werte auf jeden Fall gesetzt sein:<\/p>\n

PubkeyAuthentication yes\r\nAuthorizedKeysFile      %h\/.ssh\/authorized_keys<\/code><\/pre>\n

Sollte es sp\u00e4ter Probleme geben, dann sollte man evtl. noch nach AllowedUsers ausschau halten. Hat man Probleme mit der Authentifizierung, dann k\u00f6nnte es auch helfen den LogLevel hochzusetzen (oder runter je nach Perspektive :)), z.B. auf DEBUG.<\/p>\n

\u00d6ffentlichen Schl\u00fcssel eintragen<\/h4>\n

Nachdem die Schl\u00fcssel generiert sind, muss man Sie in ~\/.ssh\/authorized_keys eintragen. Dazu f\u00fchrt man folgenden Befehl aus:<\/p>\n

cat <filename>.pub >> ~\/.ssh\/authorized_keys<\/code><\/pre>\n

Wenn die Option StrictModes in sshd.conf aktiviert ist, dann sollte man die Datei noch dem User geben und die Rechte entsprechend setzen.<\/p>\n

chown `whoami` ~\/.ssh\/authorized_keys\r\nchmod 700 ~\/.ssh\r\nchmod 600 ~\/.ssh\/authorized_keys<\/code><\/pre>\n

Subversion starten<\/h4>\n

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

command=\"svnserve -t -r  --tunnel-user=\",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty <\/code><\/pre>\n

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

Repository anlegen<\/h3>\n

Hat man unter einen Pfad eingetragen, so muss man mit svnadmin diesen noch f\u00fcr ein Repository vorbereiten.<\/p>\n

svnadmin create <\/code><\/pre>\n

Auf der Serverseite ist nun alles entsprechend vorbereitet. Wenn man die Konfiguration sshd.conf ver\u00e4ndert hat, dann sollte man nat\u00fcrlich den Daemon neu starten. Wenn es Probleme gibt, dann hilft die auth.log weiter.<\/p>\n

Client<\/h2>\n

Auf der Clientseite ben\u00f6tigt man TortoisSVN<\/a> und Putty<\/a> (Putty, PuttyGen und Pageant).<\/p>\n

Privater Schl\u00fcssel<\/h3>\n

Zu aller erst l\u00e4dt man sich den Privaten Schl\u00fcssel vom Server herunter, den man oben mit ssh-keygen generiert hat. Nun startet man das Programm PuttyGen und w\u00e4hlt den Menupunkt „Conversion“ -> „Import Key“ und gibt den Pfad zum heruntergeladenen Schl\u00fcssel an. Nachdem alles erfolgreich ist, speichert man den Schl\u00fcssel mittels „Save Privatey Key“ unter .pkk. Dieser Schritt ist notwendig, weil es keinen Standard f\u00fcr private Schl\u00fcssel gibt und PuttyGEN generiert aus dem Schl\u00fcssen das f\u00fcr Putty notwendige PKK-File.<\/p>\n

Putty<\/h3>\n

Nun startet man Putty und gibt zu allererst den Hostnamen des Zielhosts an, dann unter Auth->SSH->Key den privaten Schl\u00fcssel und speichert diese Session z.B. unter svn1<\/strong> ab (ab diesem Punkt verweisen wir auf den Namen svn1; w\u00e4hlt man einen anderen, muss man diesen entsprechend ersetzen).<\/p>\n

Putty Pageant<\/h3>\n

Wof\u00fcr braucht man nun den (die\/das) Pageant? Der Pageant erleichtert die Arbeit mit SVN \u00fcber SSH in dem es den privaten Schl\u00fcssel cached und man das Passwort nur einmal pro Session eingeben muss. Wenn man SVN \u00fcber SSH regelm\u00e4\u00dfig nutzt, dann sollte man Pageant beim Windows Start mitstarten lassen.<\/p>\n

TortoiseSVN<\/h3>\n

Wenn man nun nach einer Repository URL gefragt wird, dann lautet diese wie folgt:<\/p>\n

svn+ssh:\/\/@svn1:\/<\/code><\/pre>\n

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 \u00fcber die Saved Session im Putty aufgel\u00f6st wird. Da wir bereits alle notwendigen Daten eingetragen haben, kann man nun mit TortoiseSVN \u00fcber SSH arbeiten.<\/p>\n","protected":false},"excerpt":{"rendered":"

Tutorial um Subversion (SVN) \u00fcber SecureShell (SSH) anzusprechen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8,3],"tags":[35],"_links":{"self":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts\/214"}],"collection":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/comments?post=214"}],"version-history":[{"count":10,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts\/214\/revisions"}],"predecessor-version":[{"id":236,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/posts\/214\/revisions\/236"}],"wp:attachment":[{"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/media?parent=214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/categories?post=214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.webmaid.de\/wp-json\/wp\/v2\/tags?post=214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}