Was ist der beste Weg, um ein verschlüsseltes SVN-Passwort auf Ubuntu Server zu speichern?

8

Hallo,

Ich habe Ubuntu Server mit einem Subversion-Server. Ich führe den Client über SSH auf demselben Computer aus und möchte, dass sich der SVN-Client mein Kennwort merkt, es jedoch nicht als Klartext speichert. Wenn ich hier schaue , sehe ich zwei Methoden: Gnome-Schlüsselring und Kwallet. Da ich keinen Desktop-Manager verwende, bin ich etwas vorsichtig, wenn ich versuche, einen davon zu verwenden. Irgendwelche Vorschläge? Wäre es in Ordnung (oder würde sogar funktionieren), eine der beiden genannten Apps zu verwenden?

TIA

Andy
quelle

Antworten:

9
  1. Sie können Gnome-Schlüsselring oder Kwallet auf dem Remote-Computer ausführen. Jedes besteht aus zwei Komponenten, einem Daemon und einer GUI.

    • Sie können die GUI-Anwendung auf dem Remotecomputer ausführen, wenn Sie ssh mit X-Weiterleitung ausführen. Nur weil es sich um einen Server handelt, heißt das nicht, dass Sie keine GUI-Anwendungen darauf installieren können. Es spielt keine Rolle, ob Sie die entsprechende Desktop-Umgebung ausführen oder nicht. Anwendungen benötigen zum Ausführen keine bestimmte Desktop-Umgebung.

    • Sie können Kwallet über die Befehlszeile steuern qdbus, obwohl dies in diesem speziellen Fall keine gute Idee ist, da Sie Ihr Kennwort im Klartext in eine Befehlszeile schreiben müssten und dies von anderen Benutzern überwacht werden kann. Siehe auch diese SU-Antwort .

    • Es gibt eine Python-Bindung für Gnome-Schlüsselring und Kwallet (Pakete python-keyring-gnomeund python-keyring-kwallet); Sie könnten ein winziges Python-Skript schreiben, um sie zu steuern. Tatsächlich gibt es bereits einen für Gnome-Schlüsselbund: gkeyring .

    • Wenn Ihr Schlüsselbundkennwort mit Ihrem Anmeldekennwort übereinstimmt, können Sie das installieren. libpam-keyringIhr Schlüsselbund wird beim Anmelden automatisch entsperrt. Dies erfordert jedoch die Anmeldung mit einem Kennwort anstelle eines Schlüsselpaars.

  2. Wenn Sie Gnome-Schlüsselring oder Kwallet lokal ausführen, können Sie sie mit ein wenig Arbeit über ssh weiterleiten. Sie verwenden Unix-Sockets, die ssh nicht weiterleiten kann. Sie können socatdie Unix-Sockets jedoch lokal an TCP-Sockets weiterleiten und umgekehrt auf dem Remotecomputer:

    while true; do socat TCP-LISTEN:22007 UNIX-CONNECT:"$GNOME_KEYRING_SOCKET"; done &
    ssh -R22007:localhost:22007 remote.example.com
    export GNOME_KEYRING_SOCKET="$HOME/.gnome-keyring-socket"
    while true; do socat UNIX-LISTEN:"$GNOME_KEYRING_SOCKET" TCP4:localhost:22007; done &
    

    Dies kann mit kleinen Shell-Skripten auf jeder Seite und einem RemoteForwardLine-In automatisiert werden ~/.ssh/config. Theoretisch sollten Sie dann von der Remote-Maschine aus auf den Gnom-Schlüsselring zugreifen können. Ich habe jedoch versucht, mit einem Seepferdchen darauf zuzugreifen, und es hat nicht einmal versucht, eine Verbindung $GNOME_KEYRING_SOCKETherzustellen. Ich weiß nicht warum und ich weiß nicht, ob svn auf den Schlüsselbund zugreifen kann.

  3. Sie können Ihr SVN-Passwort in einem verschlüsselten Dateisystem speichern. Es gibt mehrere Möglichkeiten ; Ich denke, der einfachste Weg, um loszulegen, ist encfs. Ersteinrichtung:

    sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.subversion/auth
    

    Normaler Workflow:

    encfs ~/.passwords.encrypted ~/.passwords
    ... work ...
    fusermount -u ~/.passwords
    

    Diese Methode hat meine Präferenz aus mehreren Gründen:

    • Sowohl die Ersteinrichtung als auch der normale Workflow sind sehr einfach.
    • Es spielt keine Rolle, von wo aus Sie sich anmelden. Insbesondere benötigen Sie keinen lokalen X-Server und verwenden die X-Weiterleitung über ssh.
    • Ein verschlüsseltes Dateisystem ist vielseitiger als ein Schlüsselring (obwohl es für die Verwendung von Schlüsselringen weniger praktisch ist, aber im SVN-Fall spielt das keine Rolle).
    • Das einzige nicht allgegenwärtige Tool, das Sie benötigen, ist encfs (für das FUSE erforderlich ist), und es ist für Ubuntu gepackt.
Gilles 'SO - hör auf böse zu sein'
quelle
Mehr als ich auf eine Antwort hoffen konnte, danke! Ich werde den 3. Ansatz versuchen und zurückmelden.
Andy
Sehr vollständige Antwort.
this.josh
Ist es möglich, die Subversion zu retten, wenn ~ / .subversion / auth leer / nicht vorhanden ist? Andernfalls ist der dritte Ansatz etwas gefährlich, wenn Sie vergessen, zuerst encfs auszuführen.
Unhammer
@unhammer Wenn bei diesem Ansatz das encfs-Dateisystem nicht gemountet ~/.subversion/authist, baumelt ein symbolischer Link. In diesem Fall teilt Ihnen die Subversion mit, dass Ihr Kennwort gespeichert wird (wenn Sie diese Benachrichtigung nicht deaktiviert haben), aber tatsächlich nirgendwo gespeichert wird (getestet mit SVN 1.6.6). Beim dritten Ansatz besteht also kein Risiko.
Gilles 'SO - hör auf böse zu sein'
aha, ich habe es zuerst ohne den Symlink versucht, aber jetzt sehe ich, dass ein Symlink zu einem Ordner im verschlüsselten Ordner funktioniert. Danke, dass du das
geklärt
0

gpg verschlüsselt eine Datei mit dem Passwort in, - aber dafür benötigen Sie eine Passphrase (und verlieren den privaten Schlüssel nicht!).

Ich denke, Sie könnten den privaten Schlüssel in svn einchecken, und Sie werden immer noch die Passphrase benötigen, um ihn zu verwenden, aber dieses ganze Setup scheint ein bisschen seltsam.

Warum musst du das tun?

Sirex
quelle
Ich bin nicht auf der Suche nach einem universellen Weg zum Verschlüsseln, sondern nach einem Weg, der sich gut in SVN einfügt. Wenn ich SVN unter Ubuntu dekstop verwendet habe, gab es kein Problem, daher nehme ich an, dass Gnome-Schlüsselbund verwendet wurde. Ich gehe wieder davon aus, dass der Gnome-Schlüsselring nicht auf dem Ubuntu-Server installiert ist, und deshalb gibt es das Problem. Momentan kann ich Sachen einchecken, aber ich bekomme eine Warnung, dass ich das Passwort nur unverschlüsselt speichern kann. Siehe den Link, den ich gegeben habe, für weitere Details. Vielen Dank.
Andy
Ich habe die obige Erklärung klargestellt, hth.
Andy
Ich würde gerne ~ / .authinfo.gpg mit dem Standard-Netrc-Format für SVN verwenden und gpg die Verschlüsselung übernehmen lassen, aber leider scheint es, als würde es etwas mehr Setup erfordern als die encfs-Lösung. Es scheint nicht so, als ob svn beliebige benutzerdefinierte Passwortspeicher zulässt.
Unhammer