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

8

Tiens,

J'ai Ubuntu Server exécutant un serveur subversion. J'exécute 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 de le stocker en texte clair. En regardant ici, je vois deux méthodes: gnome-keyring et kwallet. Comme je n'utilise pas de gestionnaire de bureau, je me méfie un peu d'essayer d'en utiliser un. Aucune suggestion? Serait-il correct (ou même de travailler) d'utiliser l'une des deux applications que j'ai mentionnées?

TIA

Andy
la source

Réponses:

9
  1. Vous pouvez exécuter Gnome-keyring ou Kwallet sur la machine distante. Chacun vient en deux composants, un démon et une interface graphique.

    • Vous pouvez exécuter l'application GUI sur la machine distante si vous exécutez ssh avec le transfert X. Ce n'est pas parce que c'est une machine «serveur» que vous ne pouvez pas y installer d'applications GUI. Peu importe que vous exécutiez l'environnement de bureau correspondant ou non, les applications n'ont pas besoin d'un environnement de bureau spécifique pour s'exécuter.

    • Vous pouvez contrôler Kwallet sur la ligne de commande qdbus, bien que ce ne soit pas une bonne idée dans ce cas spécifique car vous devrez écrire votre mot de passe en texte clair sur une ligne de commande, et cela peut être espionné par d'autres utilisateurs. Voir aussi cette réponse SU .

    • Il existe une liaison python pour Gnome-keyring et Kwallet (packages python-keyring-gnomeet 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 trousseau de clés est le même que votre mot de passe de connexion, vous pouvez installer le libpam-keyringet votre trousseau de clés sera automatiquement déverrouillé lorsque vous vous connecterez. Cependant, cela nécessite de vous connecter avec un mot de passe plutôt qu'une paire de clés.

  2. Si vous exécutez Gnome-keyring ou Kwallet localement, vous pouvez les transférer via ssh, avec un peu de travail. Ils utilisent des sockets Unix, que ssh ne peut pas transférer. Mais vous pouvez utiliser le socatrelais des sockets Unix vers les sockets TCP localement et inversement 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 RemoteForwardligne dedans ~/.ssh/config. En théorie, vous devriez alors pouvoir accéder au trousseau de clés gnome à partir de la machine distante. Cependant, j'ai essayé d'y accéder avec des hippocampes, 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 trousseau de clés.

  3. Vous pouvez stocker votre mot de passe svn sur un système de fichiers crypté. Il existe plusieurs options ; Je pense que la façon la plus simple de commencer 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 d'où vous vous connectez, en particulier vous n'avez pas besoin d'avoir un serveur X local et d'utiliser le transfert X sur ssh.
    • Un système de fichiers chiffré est plus polyvalent qu'un trousseau de clés (bien qu'il soit moins pratique pour une utilisation avec un trousseau de clés, mais dans le cas svn cela n'a pas d'importance).
    • Le seul outil non ubiquitaire dont vous avez besoin est encfs (qui nécessite FUSE), et il est conditionné pour Ubuntu.
Gilles 'SO- arrête d'être méchant'
la source
Plus que je n'aurais pu espérer dans une réponse, merci! Je vais essayer la 3ème approche et faire un rapport.
Andy
Réponse très complète.
this.josh
Est-il possible de renflouer Subversion si ~ / .subversion / auth est vide / inexistant? Sinon, la 3e approche est un peu dangereuse si vous oubliez d'exécuter encfs en premier.
unhammer
@unhammer Avec cette approche, si le système de fichiers encfs n'est pas monté, il ~/.subversion/auths'agit alors d' un lien symbolique pendant. Dans ce cas, subversion vous indique qu'il va stocker votre mot de passe (si vous n'avez pas désactivé cette notification) mais ne le stocke en fait nulle part (testé avec svn 1.6.6). Il n'y a donc aucun risque avec la troisième approche.
Gilles 'SO- arrête d'être méchant'
aha, j'ai d'abord essayé sans le lien symbolique, mais maintenant je vois un lien symbolique vers un dossier à l'intérieur du dossier crypté fonctionne, merci d'avoir
clarifié
0

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

Je suppose que vous pouvez vérifier dans svn la clé privée ainsi que vous aurez toujours besoin de la phrase secrète pour l'utiliser, mais toute cette configuration semble un peu étrange.

pourquoi avez-vous besoin de faire ça?

Sirex
la source
Je ne cherche pas un moyen général de chiffrer, mais un moyen qui se connecte bien avec SVN. Lorsque j'ai utilisé SVN sur Ubuntu dekstop, il n'y a pas eu de problème, donc je suppose qu'il utilise gnome-keyring. Je présume encore une fois que gnome-keyring n'est pas installé sur le serveur Ubuntu, et c'est pourquoi il y a le problème. Actuellement, je peux enregistrer des éléments, mais je reçois un avertissement indiquant que je ne peux stocker que le mot de passe non crypté. Voir le lien que j'ai donné pour plus de détails. Merci.
Andy
J'ai clarifié l'explication ci-dessus, hth.
Andy
J'aime à utiliser ~ / .authinfo.gpg avec le format standard netrc pour SVN, et ont GPG gérer le cryptage, mais malheureusement , il semble que comme il avait besoin d' un peu plus que la configuration solution encfs. Il ne semble pas que svn autorise des magasins de mots de passe définis par l'utilisateur arbitraires.
unhammer