Ich habe SSH-Zugriff auf eine FreeBSD-Maschine, auf der svnadmin
(und die restlichen erforderlichen Dienstprogramme) installiert sind. svn ist Version 1.7.9 (r1462340). Ich verwende Windows 7 x64 und Tortoise SVN 1.7.7.
Ich bin gefolgtdieser offizielle Leitfadenum mir beim Einrichten meines Servers und Tortoise SVN zu helfen, aber ich habe Probleme beim Einrichten.
Ich habe ein Paar privater/öffentlicher Schlüssel generiert und sie der ~/.ssh/authorized_keys
Datei meines Servers bzw. meiner Putty-Konfiguration hinzugefügt. Ich kann mich mit Putty und meinem privaten Schlüssel mit dem Remote-Computer verbinden.
Ich habe auch versucht, Tortoise SVN so zu konfigurieren, dass es dasselbe tut, und ich verbinde mich mit:
svn+ssh://myBSDusername@it2svn/somerepo
Wo it2svn
ist der Name desArbeitenPutty-Verbindungsprofil und somerepo
ist ein Repository in meinem Repository-Stamm ( ~/svnroot/somerepo
).
Das Problem, das auftrittist, dass Tortoise SVN die Passphrase meines Schlüssels anfordert und egal, wie oft ich sie richtig eingebe, das Passwortdialogfeld für 1–2 Sekunden geschlossen wird und ich danach erneut zur Eingabe der Passphrase aufgefordert werde.Es heißt nicht einmal, dass es falsch ist, ich werde immer wieder nach der Passphrase gefragt.
Wenn ich absichtlich die falsche Passphrase eingebe, werde ich erneut dazu aufgefordertsofort, ohne die 1-2 Sekunden Verzögerung, die beim Eingeben der richtigen Passphrase auftritt. Der Dialog sagt immer noch nicht, dass es falsch ist, obwohl ich Kauderwelsch eingebe. Das könnte ein Fehler auf ihrer Seite sein, aber es erklärt immer noch nicht, warum meine richtige Passphrase nicht akzeptiert wird.
Aufbau
Hier ist der Inhalt der authorized_keys
Datei (ohne den eigentlichen Inhalt der Schlüssel):
ssh-dss AAA....FuA== myBSDusername@ems
command="svnserve -t -r ~/svnroot --tunnel-user=svnAuthorDude",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-dss AAAA....IFuA== myBSDusername@ems
Wichtiger Hinweis:in der Anleitung stand, dass meine „Befehlszeile“ folgendermaßen aussehen sollte:
command="svnserve -t -r <ReposRootPath> --tunnel-user=<author>",
no-port-forwarding,no-agent-forwarding,no-X11-forwarding,
no-pty ssh-rsa <PublicKey> <Comment>
Aber der Schlüssel, den ich mit ssh-keygen
den gleichen Parametern wie in der Anleitung generiert habe, beginnt mit ssh-dss
statt mit ssh-rsa
, weshalb ssh-rsa
in meiner eigenen Datei durch ersetzt wird dss
(offenbar, weil der Schlüssel ein DSA- und kein RSA-Schlüssel ist).
Antwort1
Ihr Problem bestand darin, dass Sie für Ihr Schlüsselpaar eine Passphrase verwendet und nicht Pageant verwendet haben.
Wenn TortoiseSVn eine Verbindung über einen SSH-Tunnel herstellt, scheint es mehrere separate Anfragen mit plink (oder TortoisePLink) zu stellen. Jedes Mal, wenn dies geschieht, wird der SSH-Schlüssel benötigt und muss daher entsperrt werden, sodass die Kennwortabfrage erfolgt.
Wenn Sie das Schlüsselpaar nicht mit einem Passwort schützen, müssen Sie nicht nach dem Passwort fragen.
Wenn Sie pageant so konfigurieren, dass der Schlüssel geladen wird, bevor Sie TortoiseSVN verwenden, ruft plink den bereits entsperrten und zwischengespeicherten Schlüssel stattdessen von pageant ab. Auf diese Weise können Sie einen kennwortgeschützten Schlüssel verwenden und müssen das Kennwort nicht wiederholt eingeben. Sie müssen es jedoch trotzdem einmal eingeben, wenn Sie den Schlüssel zu pageant hinzufügen.
Antwort2
Ich habe das Schlüsselpaar mit PuttyGen neu generiert und es zu einem RSA2-Schlüsselpaar gemacht (im Gegensatz zu den alten DSA-Schlüsseln). Ich habe auch darauf verzichtet, meinen privaten Schlüssel mit einer Passphrase zu schützen, und jetzt funktioniert alles (wie von Zauberhand). Ich weiß nicht genau, welche Änderung das Problem tatsächlich behoben hat, aber ich hoffe, dass dies einem zukünftigen Entwickler mit einem ähnlichen Problem helfen wird.
Hier sind die (relevanten) Inhalte meines Benutzers ~/.ssh/authorized_keys
:
ssh-rsa AAAA...Wc= rsa-key-20130529
command="svnserve -t -r /user/rest/of/path/svnroot --tunnel-user=someuser",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA...Wc= andrei