ハロー、
UbuntuサーバーでSubversionサーバーを実行しています。 SSHを介して同じマシンでクライアントを実行していますが、svnクライアントにパスワードを記憶させたいのですが、プレーンテキストとして保存しないでください。見てください ここ 私は2つの方法を見ます:gnome-keyringとkwallet。私はデスクトップマネージャーを使用していないので、これらのいずれかを使用しようとすることについて少し警戒しています。助言がありますか?私が言及した2つのアプリのいずれかを使用しても大丈夫ですか(または機能しますか)?
TIA
リモートマシンでGnomeキーリングまたはKwalletを実行できます。それぞれ、デーモンとGUIの2つのコンポーネントで提供されます。
X転送でsshを実行すると、リモートマシンでGUIアプリケーションを実行できます。 「サーバー」マシンであるからといって、GUIアプリケーションをインストールできないわけではありません。対応するデスクトップ環境を実行しているかどうかは関係ありません。アプリケーションを実行するために特定のデスクトップ環境は必要ありません。
qdbus
を介してコマンドラインでKwalletを制御できますが、コマンドラインでパスワードをクリアテキストで記述する必要があり、他のユーザーがこれをスヌープする可能性があるため、この特定のケースではお勧めできません。 。 このSUの回答 も参照してください。
GnomeキーリングとKwalletの両方にpythonバインディング(パッケージpython-keyring-gnome
とpython-keyring-kwallet
)があります);小さなpythonそれらを制御するスクリプト。実際、Gnomeキーリング用のスクリプトはすでに1つあります: gkeyring 。
キーリングのパスワードがログインパスワードと同じ場合は、libpam-keyring
をインストールすると、ログイン時にキーリングのロックが自動的に解除されます。ただし、これには、キーペアではなくパスワードを使用してログインする必要があります。
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/config
にRemoteForward
行があると自動化できます。理論的には、リモートマシンからgnomeキーリングにアクセスできるはずです。しかし、タツノオトシゴでアクセスしようとしましたが、$GNOME_KEYRING_SOCKET
に接続しようとさえしませんでした。理由はわかりませんし、svnがキーリングにアクセスできるかどうかもわかりません。
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
この方法には、いくつかの理由で私の好みがあります。
gpgは、のパスワードを使用してファイルを暗号化しますが、そのためのパスフレーズが必要になります(秘密鍵を紛失しないでください!)。
秘密鍵をsvnにチェックインすることもできますし、それを使用するにはパスフレーズが必要ですが、この設定全体は少し奇妙に思えます。
なぜあなたはこれをする必要があるのですか?