web-dev-qa-db-ja.com

暗号化されたsvnパスワードをUbuntuサーバーに保存するための最良の方法は何ですか?

ハロー、

UbuntuサーバーでSubversionサーバーを実行しています。 SSHを介して同じマシンでクライアントを実行していますが、svnクライアントにパスワードを記憶させたいのですが、プレーンテキストとして保存しないでください。見てください ここ 私は2つの方法を見ます:gnome-keyringとkwallet。私はデスクトップマネージャーを使用していないので、これらのいずれかを使用しようとすることについて少し警戒しています。助言がありますか?私が言及した2つのアプリのいずれかを使用しても大丈夫ですか(または機能しますか)?

TIA

8
Andy
  1. リモートマシンでGnomeキーリングまたはKwalletを実行できます。それぞれ、デーモンとGUIの2つのコンポーネントで提供されます。

    • X転送でsshを実行すると、リモートマシンでGUIアプリケーションを実行できます。 「サーバー」マシンであるからといって、GUIアプリケーションをインストールできないわけではありません。対応するデスクトップ環境を実行しているかどうかは関係ありません。アプリケーションを実行するために特定のデスクトップ環境は必要ありません。

    • qdbusを介してコマンドラインでKwalletを制御できますが、コマンドラインでパスワードをクリアテキストで記述する必要があり、他のユーザーがこれをスヌープする可能性があるため、この特定のケースではお勧めできません。 。 このSUの回答 も参照してください。

    • GnomeキーリングとKwalletの両方にpythonバインディング(パッケージpython-keyring-gnomepython-keyring-kwallet)があります);小さなpythonそれらを制御するスクリプト。実際、Gnomeキーリング用のスクリプトはすでに1つあります: gkeyring

    • キーリングのパスワードがログインパスワードと同じ場合は、libpam-keyringをインストールすると、ログイン時にキーリングのロックが自動的に解除されます。ただし、これには、キーペアではなくパスワードを使用してログインする必要があります。

  2. Gnome-keyringまたはKwalletをローカルで実行している場合は、少し手間をかけてsshを介して転送できます。それらは、sshが転送できないUnixソケットを使用します。ただし、socatを使用して、UnixソケットをローカルでTCPソケットに、またはリモートマシンでその逆にリレーすることができます。

    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 &
    

    これは、両側に小さなシェルスクリプトがあり、~/.ssh/configRemoteForward行があると自動化できます。理論的には、リモートマシンからgnomeキーリングにアクセスできるはずです。しかし、タツノオトシゴでアクセスしようとしましたが、$GNOME_KEYRING_SOCKETに接続しようとさえしませんでした。理由はわかりませんし、svnがキーリングにアクセスできるかどうかもわかりません。

  3. Svnパスワードは暗号化されたファイルシステムに保存できます。 いくつかのオプションがあります ;始める最も簡単な方法はencfsだと思います。初期設定:

    Sudo aptitude install encfs
    encfs ~/.passwords.encrypted ~/.passwords
    mv ~/.Subversion/auth ~/.passwords/svn-auth
    ln -s ../.passwords/svn-auth ~/.Subversion/auth
    

    通常のワークフロー:

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

    この方法には、いくつかの理由で私の好みがあります。

    • 初期設定と通常のワークフローはどちらも非常に簡単です。
    • どこからログインするかは問題ではありません。特に、ローカルXサーバーがなく、ssh経由でX転送を使用する必要はありません。
    • 暗号化されたファイルシステムは、キーリングよりも用途が広いです(ただし、キーリングの使用にはあまり便利ではありませんが、svnの場合は問題ではありません)。
    • 必要な唯一の非ユビキタスツールはencfs(Fuseが必要)であり、Ubuntu用にパッケージ化されています。

gpgは、のパスワードを使用してファイルを暗号化しますが、そのためのパスフレーズが必要になります(秘密鍵を紛失しないでください!)。

秘密鍵をsvnにチェックインすることもできますし、それを使用するにはパスフレーズが必要ですが、この設定全体は少し奇妙に思えます。

なぜあなたはこれをする必要があるのですか?

0
Sirex