Quelle est la meilleure façon de stocker un mot de passe svn crypté sur Ubuntu Server?

Tiens,

J'ai Ubuntu Server exécutant un serveur de subversion. Je gère le client sur la même machine via SSH et j'aimerais que le client svn se souvienne de mon mot de passe, mais pas pour le stocker en texte clair. En regardant ici, je vois deux méthodes: gnome-keyring et kwallet. Comme je n'utilise pas un gestionnaire de bureau, je suis un peu méfiant d'essayer d'utiliser l'un de ces. Aucune suggestion? Est-ce que ce serait correct (ou même le travail) d'utiliser l'une des deux applications que j'ai mentionnées?

TIA

  1. Vous pouvez exécuter Gnome-keyring ou Kwallet sur la machine distante. Chacun est composé de deux composants, d'un démon et d'une GUI.

    • Vous pouvez exécuter l'application GUI sur la machine distante si vous exécutez ssh avec un renvoi X. Tout simplement parce qu'il s'agit d'une machine "serveur" ne signifie pas que vous ne pouvez pas installer les applications GUI. Peu importe si vous utilisez l'environnement de bureau correspondant ou non, les applications n'ont pas besoin d'un environnement de bureau spécifique à exécuter.

    • Vous pouvez contrôler Kwallet sur la ligne de commande via qdbus , mais ce n'est pas une bonne idée dans ce cas particulier, car il faudrait écrire votre mot de passe en clair sur une ligne de commande, ce qui peut être snoopé par d'autres utilisateurs. Voir aussi cette réponse SU .

    • Il existe une liaison python pour Gnome-keyring et Kwallet (paquets python-keyring-gnome et python-keyring-kwallet ); Vous pouvez écrire un petit script python pour les contrôler. En fait, il y en a déjà un pour Gnome-keyring: gkeyring .

    • Si votre mot de passe de clé est identique à votre mot de passe de connexion, vous pouvez installer le libpam-keyring et votre porte-clés sera automatiquement déverrouillé lorsque vous vous connectez. Cependant, cela nécessite d'être connecté avec un mot de passe plutôt qu'une paire de clés.

  2. Si vous utilisez Gnome-keyring ou Kwallet localement, vous pouvez les transmettre par ssh avec un peu de travail. Ils utilisent les prises Unix, que ssh ne peut pas transmettre. Mais vous pouvez utiliser socat relais les prises Unix sur les sockets TCP localement et socat sur la machine distante:

     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 & 

    Cela peut être automatisé avec de petits scripts shell de chaque côté et une ligne RemoteForward dans ~/.ssh/config . En théorie, vous pouvez alors accéder au porte-clés gnome de la machine distante. Cependant, j'ai essayé d'y accéder avec l'hippocampe, et il n'a même pas essayé de se connecter à $GNOME_KEYRING_SOCKET ; Je ne sais pas pourquoi, et je ne sais pas si svn pourrait accéder au porte-clés.

  3. Vous pouvez enregistrer votre mot de passe svn sur un système de fichiers crypté. Il existe plusieurs options ; Je pense que le moyen le plus simple d'aller de l'avant est encfs . La configuration initiale:

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

    Flux de travail normal:

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

    Cette méthode a ma préférence pour plusieurs raisons:

    • La configuration initiale et le flux de travail normal sont très simples.
    • Peu importe où vous vous connectez, en particulier, vous n'avez pas besoin d'avoir un serveur X local et utilisez le transfert X sur ssh.
    • Un système de fichiers chiffré est plus polyvalent qu'un porte-clés (bien qu'il soit moins pratique pour l'utilisation de l'ensemble de clés, mais dans le cas svn qui n'a pas d'importance).
    • Le seul outil non omniprésent dont vous avez besoin est encfs (qui nécessite FUSE), et il est emballé pour Ubuntu.

Gpg crypte un fichier avec le mot de passe, – mais vous aurez besoin d'une phrase secrète pour cela (et ne perdez pas la clé privée!).

Je suppose que vous pourriez vérifier dans svn la clé privée aussi bien que vous aurez toujours besoin de la phrase de passe pour l'utiliser, mais cette configuration semble un peu bizarre.

Pourquoi devez-vous faire cela?