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


8

ハロー、

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

TIA

回答:


9
  1. リモートマシンでGnome-keyringまたはKwalletを実行できます。それぞれにデーモンとGUIの2つのコンポーネントがあります。

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

    • コマンドラインでを介してKwalletを制御できますが、コマンドラインでqdbusパスワードをクリアテキストで書き込む必要があるため、この特定のケースではお勧めできません。このSUの回答も参照してください。

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

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

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

    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 &
    

    これは、両側の小さなシェルスクリプトとのRemoteForward行で自動化できます~/.ssh/config。理論的には、リモートマシンから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用にパッケージ化されています。

答えに期待できなかった以上、ありがとう!3番目のアプローチを試して、また報告します。
Andy

非常に完全な答え。
this.josh 2012年

〜/ .subversion / authが空/存在しない場合、subversionをベイルアウトすることはできますか?そうしないと、最初にencfsを実行するのを忘れた場合、3番目のアプローチは少し危険です。
2012

@unhammerこのアプローチでは、encfsファイルシステムがマウントされていない場合、~/.subversion/authぶら下がりシンボリックリンクになります。その場合、Subversionはパスワードを保存することを通知します(その通知をオフにしていない場合)が、実際にはどこにも保存しません(svn 1.6.6でテスト済み)。したがって、3番目のアプローチにはリスクはありません。
Gilles「SO-邪悪なことをやめよう」

なるほど、私が最初にシンボリックリンクせずに試してみましたが、今私は、暗号化されたフォルダ内のフォルダへのシンボリックリンクが作業を行い参照:-)までという清算をお願いいたします
unhammer

0

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

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

なぜこれを行う必要があるのですか?


暗号化するための汎用的な方法を探しているのではなく、SVNにうまくプラグインする方法を探しています。Ubuntu dekstopでSVNを使用したときは問題がなかったので、gnome-keyringを使用していたと思います。私はもう一度gnome-keyringがUbuntuサーバーにインストールされていないと思います、そしてそれが問題がある理由です。現在、チェックインはできますが、暗号化されていないパスワードしか保存できないという警告が表示されます。詳細については、私が挙げたリンクを参照してください。ありがとう。
Andy

上記の説明を明確にしました。
Andy

私は思い愛する SVNのための標準的なnetrcのフォーマットで使用する〜/ .authinfo.gpgに、暗号化を扱うGPG持っているが、それはencfsソリューションよりも少しセットアップを必要としたいよう、残念ながらそれは思われます。svnが任意のユーザー定義のパスワードストアを許可しているようには見えません。
2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.