So speichern Sie ein Kennwort, wenn Sie Subversion über die Konsole verwenden

106

Ich habe mich gefragt, ob es eine Möglichkeit gibt, mein Subversion-Kennwort zu speichern, wenn svnVorgänge über die Konsole ausgeführt werden. Die Konsole ist die einzige Option, die ich habe. Wenn ich versuche, eine Subversion-Aktion auszuführen, z. B. svn commitwird jedes Mal zur Eingabe des Kontokennworts aufgefordert . Gibt es eine Möglichkeit, dieses Passwort irgendwie zu speichern, damit ich es nicht jedes Mal neu eingeben muss?

John McDonald
quelle
Siehe auch svn store password kann nicht erstellt werden, obwohl die Konfiguration so eingestellt ist, dass eine Fehlerbehebung möglich ist, falls die akzeptierte Antwort nicht funktioniert.
Maxschlepzig

Antworten:

110

In ~/.subversion/confighaben Sie wahrscheinlich store-passwords = no. Ändern Sie es in yes(oder kommentieren Sie es einfach aus, weil es standardmäßig Ja ist), und wenn Sie Subversion das nächste Mal Ihr Passwort geben, sollte es gespeichert werden.

Möglicherweise möchten Sie sicherstellen, dass der Eigentümer und die Berechtigungen von ~/.subversion/configkorrekt sind (kein öffentlicher oder Gruppenzugriff; 600).

Michael Mrozek
quelle
Ich kann diese Datei nicht finden Red Hat Linux 2.6.18. Irgendeine Idee, wo es sein könnte?
Ish
3
@Ish Möglicherweise müssen Sie es erstellen, wenn es noch nicht vorhanden ist. Ich denke, SVN sieht dort in allen Distributionen aus
Michael Mrozek
5
+1, Nach dem Erstellen des Dateisystems /etc/subversion/configarbeiten Sie wie erwartet. Danke
Ish
@IshKumar Danke! Hat zum ersten Mal für mich gearbeitet!
Anil
15
@Seven Besser noch, schreibe einfach eine neue Antwort, die aktueller ist. (Die store-passwordsOption in configist jetzt veraltet, gemäß einigen Standardkommentaren, die ich in meiner configDatei gefunden habe ; sie wurde durch dieselbe Option in ersetzt servers.)
Kyle Strand
54

Dies hängt vom verwendeten Protokoll ab. Wenn Sie SVN + SSH verwenden, kann der SVN-Client Ihr Kennwort nicht speichern, da es es nie berührt. Der SSH-Client fordert Sie direkt dazu auf. In diesem Fall können Sie einen SSH-Schlüssel und einen SSH-Agenten verwenden, um die ständigen Eingabeaufforderungen zu vermeiden. Wenn Sie das svnserve-Protokoll oder HTTP (S) verwenden, verarbeitet der SSH-Client Ihr Kennwort und kann es speichern.

niemand
quelle
4
+1 Ich habe genau dieses Problem - svn + ssh fragt mich immer nach einem Passwort. Gibt es außerhalb der Freigabe eines öffentlichen Schlüssels eine Möglichkeit, dies zu vermeiden? Ich habe ssh-agent ausprobiert, aber ohne Glück.
Michael Mikowski
@MichaelMikowski Scheint, dass das SSH-Passwort nicht in der Konfiguration für die automatische Anmeldung gespeichert werden kann. Sie können ein neues Schlüsselpaar dafür erstellen, den Speicherort des privaten Schlüssels speichern .ssh/configund den öffentlichen Schlüssel an den SVN-Server anhängen.
lk_vc
33

Löschen Sie Ihren .subversionOrdner in Ihrem Home-Verzeichnis und versuchen Sie erneut, einen Commit durchzuführen. Es sollte Sie zur Eingabe Ihres Passworts auffordern und Sie dann fragen, ob Sie das Passwort speichern möchten.

Earlz
quelle
Du meinst stattdessen den Ordner .subversion!
Khmarbaise
3
Ich hatte das gleiche Problem. Ich hatte in meiner Konfigurations- oder Serverdatei keine der Einstellungen für das Speicherkennwort auf "Nein" gesetzt, aber dies funktionierte.
Bob B
1
Ich habe versucht, alle Arten von Einstellungen ohne Erfolg zu ändern. Das einzige, was dieses Problem letztendlich löste, war das Löschen des Ordners .subversion.
Michael Noyb
Das hat auch bei mir funktioniert. Interessanterweise hat es das Passwort für mich im Ordner ~ / .subversion / auth / svn.simple gespeichert.
Chetan
Dies tat es auch für mich, aber ich sah zu, was der Unterschied war - und es stellte sich heraus, dass es Eigentum des .subversion-Verzeichnisses und seiner Dateien war. Nach der Übertragung von Daten von einem anderen Computer gehörte dieses Verzeichnis irgendwie root, wenn es mir gehören sollte. Das Entfernen des Verzeichnisses und das Neuerstellen durch svn haben das Problem behoben (aber chown hätte es wahrscheinlich genauso gut behoben).
Joe Strout
19

Ich musste bearbeiten ~/.subversion/servers. Ich habe gesetzt store-plaintext-passwords = yes(war vorher nicht). Das hat funktioniert. Es könnte jedoch als unsicher angesehen werden.

Hajamie
quelle
3
In der gleichen Datei musste ich einstellen store-passwords = yes. Ich glaube, es wurde vorher eingestellt, wurde aber nicht gesetzt, als ich auf SVN 1.7
pieman72
9

Bitte beachten Sie den folgenden Absatz aus der ~/.subversion/serversDatei:

Sowohl 'store-passwords' als auch 'store-auth-creds' können jetzt in der 'servers'-Datei in Ihrem Konfigurationsverzeichnis angegeben werden. Alles, was in diesem Abschnitt angegeben ist, wird durch die in der Datei "Server" angegebenen Einstellungen überschrieben.

Es ist mindestens für SVN Version 1.6.12. Denken Sie also daran, die Serverdatei auch beim Überschreiben zu bearbeiten ~/.subversion/config.

Rusu Bogdan
quelle
Das half zu sehen, dass es in derselben Datei ein Überschreiben gab (zwei "Passwortspeicher" -Deklaration!). Das wurde korrigiert und die Datei svn.simple wurde mit der Eigenschaft gnome-keyring erstellt.
Danielson Alves Júnior
5

Wenn Sie svn + ssh verwenden , können Sie Ihren öffentlichen ssh-Schlüssel auf den Remotecomputer kopieren:

ssh-copy-id user@remotehost
Michael Schmid
quelle
5

Für mich (Mac-Benutzer) bestand das Problem darin, dass im Schlüsselbund bereits ein Eintrag für meine Anmeldeinformationen gespeichert war, die Zugriffsrechte jedoch nicht richtig waren.

Das Löschen des Eintrags in der Schlüsselketten-App und das anschließende Neuerstellen mithilfe von svn haben das Problem behoben.

Trias
quelle
4

Keine dieser wunderbaren Antworten hat bei einer Neuinstallation von Ubuntu für mich funktioniert. Stattdessen hat ein Hinweis auf diese Antwort den Trick für mich getan.

Ich musste das "einfache" Speichern von Passwörtern zulassen, indem ich dies leer setzte in ~/.subversion/config:

password-stores =

Es gab keine vorhandene Einstellung, daher ist es wichtig, leer zu sein.

Dies war zusätzlich zu:

store-passwords = yes

in ~/.subversion/servers.

Heath Raftery
quelle
Dies hat mir auch geholfen, da die Standardoption anscheinend funktionieren sollte, aber sofern nicht ausdrücklich angegeben, funktioniert dies nicht :(
Arunas Bartisius
3

Die Verwendung von Klartext ist möglicherweise nicht die beste Wahl, wenn das Kennwort jemals als etwas anderes verwendet wird.

Ich unterstütze die akzeptierte Antwort, aber sie hat bei mir nicht funktioniert - aus einem ganz bestimmten Grund: Ich wollte entweder kwalletoder gnome-keyringPasswortspeicher verwenden. Ich habe versucht, die Einstellungen in allen vier Dateien zu ändern:

/etc/subversion/config
/etc/subversion/servers
~/.subversion/config
~/.subversion/servers

Selbst nachdem alles gleich eingestellt war, password-storesfunktionierte es mit und KWallet-Name (Standard könnte falsch sein, oder?) Nicht und fragte immer wieder nach dem Passwort. Die Dateien in ~/.subversionhatten Berechtigungen 600.

Nun, an diesem Punkt können Sie versuchen, eine einfache Sache zu überprüfen:

which svn

Wenn du bekommst:

/usr/bin/local/svn

Dann können Sie mit großer Wahrscheinlichkeit vermuten, dass dieser Client lokal von Ihrem Administrator aus der Quelle erstellt wurde (dies können Sie selbst sein, wie in meinem Fall).

Subversion ist ein böses Tier zum Kompilieren , sehr einfach versehentlich ohne HTTP-Unterstützung oder - wie in meinem Beispiel - ohne Unterstützung für verschlüsselte Passwortspeicher zu erstellen (Sie benötigen entweder Gnome- oder KDE-Entwicklungsdateien und viele davon!). Aber das ./configureSkript sagt Ihnen das nicht und Sie erhalten nur einen weniger funktionalen svnBefehl.

In diesem Fall können Sie zu dem Client zurückkehren, der mit Ihrer Distribution geliefert wurde, normalerweise in /usr/bin/svn. Der Nachteil ist, dass Sie die Arbeitskopien wahrscheinlich erneut auschecken müssen, da kein svn downgradeBefehl vorhanden ist. Sie können Linus Torvalds konsultieren, was Sie über Subversion denken sollten;)

Tomasz Gandor
quelle
2

Um Heaths Antwort hinzuzufügen: Es sieht so aus, als ob Subversion 1.6 das Speichern von Passwörtern standardmäßig deaktiviert hat, wenn sie nicht in verschlüsselter Form gespeichert werden können. Sie können das Speichern unverschlüsselter Kennwörter zulassen, indem Sie explizit password-stores =( dh den leeren Wert) in festlegen ~/.subversion/config.

Überprüfen Sie, welche Subversion für den Kennwortspeicher verwendet wird ~/.subversion/auth/svn.simple. Diese enthält mehrere Dateien, jede eine Hash-Tabelle mit einer einfachen Schlüssel- / Wertcodierung. Das svn:realmstringin jeder Datei gibt an, für welchen Bereich diese Datei bestimmt ist. Wenn die Datei hat

K 8
passtype
V 6
simple

Dann speichert es das Passwort im Klartext irgendwo in dieser Datei in einem K 8 passwordEintrag. Andernfalls wird versucht, eine der konfigurierten zu verwenden password-stores.

Thakis
quelle
1

Alle hier genannten Methoden funktionieren bei mir nicht. Ich habe Subversion aus dem Quellcode erstellt und festgestellt, dass ich configure mit ausführen muss --enable-plaintext-password-storage, um diese Funktion zu unterstützen.

Domain
quelle
1

Um zu betonen, was Tomasz Gandor und Domain über die richtige Version von svn gesagt haben und dass diese kompiliert wurde, um die Speicherung von Klartext-Passwörtern zu ermöglichen, müssen Sie überprüfen, was Sie haben:

svn --version
svn, version 1.9.7 (r1800392)
...
WARNING: Plaintext password storage is enabled!
...

The following authentication credential caches are available:

* Plaintext cache in /gr/home/ffvdqb/.subversion
* GPG-Agent

Gegen:

svn --version
svn, version 1.12.2 (r1863366)
...

The following authentication credential caches are available:

* Gnome Keyring
* GPG-Agent
* KWallet (KDE)

Wenn Sie sehen, dass Ihre Version von svn für die Speicherung von Klartextkennwörtern aktiviert wurde, wenden Sie alle restlichen Antworten hier an.

Jim
quelle
1

Ich verwende den TortoiseSVN- Client unter Windows. Wenn Sie den Parameter store-passwords auf yes in setzen, %USERPROFILE%\AppData\Roaming\Subversion\confighilft dies nicht, das Kennwort zu speichern.

Das Passwort wurde nach dem Entfernen dieses Ordners erfolgreich gespeichert (nur für den Fall, dass es umbenannt wird):

%USERPROFILE%\AppData\Roaming\Subversion\auth

Umgebung:

Windows 7, TortoiseSVN 1.7.11 (Build 23600 - 64 bit, 2012-12-12T19:08:52), Subversion 1.7.8.
Anton Arkhipkin
quelle
0

Leider lösten die Antworten nicht das Problem, nach einem Passwort für ssh + svn mit einem geschützten privaten Schlüssel zu fragen. Nach einigen Recherchen fand ich:

ssh-add

Dienstprogramm, wenn Sie einen Linux-Computer haben. Stellen Sie sicher, dass Ihre Schlüssel gespeichert sind, /home/username/.ssh/und geben Sie diesen Befehl auf dem Terminal ein.

www
quelle