Answers:
您可以在远程计算机上运行Gnome密钥管理或Kwallet。每个都有两个组件,一个守护程序和一个GUI。
如果通过X转发运行ssh,则可以在远程计算机上运行GUI应用程序。仅仅因为它是一台“服务器”机器并不意味着您不能在其上安装GUI应用程序。无论您是否正在运行相应的桌面环境都没有关系,应用程序不需要特定的桌面环境即可运行。
您可以通过命令行在Kwallet上进行控制qdbus
,尽管在这种情况下这不是一个好主意,因为您必须在命令行上以明文形式编写密码,而其他用户也可能会窥探到它。另请参见此SU答案。
Gnome-keyring和Kwallet都有python绑定(包python-keyring-gnome
和python-keyring-kwallet
);您可以编写一个小的python脚本来控制它们。实际上,Gnome-keyring已经存在一个:gkeyring。
如果您的密钥环密码与登录密码相同,则可以安装,libpam-keyring
并且您的密钥环将在登录时自动解锁。但是,这需要使用密码而不是密钥对进行登录。
如果您在本地运行Gnome密钥管理或Kwallet,则可以通过ssh转发它们,而需要做一些工作。他们使用Unix套接字,而ssh无法转发。但是您可以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 &
可以通过每边的小shell脚本和中的RemoteForward
一行来自动执行此操作~/.ssh/config
。从理论上讲,您应该能够从远程计算机访问gnome密钥环。但是,我尝试使用seahorse访问它,甚至没有尝试连接到$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
我出于某些原因而偏爱此方法:
~/.subversion/auth
则为悬挂的符号链接。在这种情况下,subversion会告诉您它将存储您的密码(如果您尚未关闭该通知),但实际上不会将其存储在任何地方(已通过svn 1.6.6测试)。因此,第三种方法没有风险。
gpg使用输入的密码对文件进行加密--但是您需要为此设置一个密码短语(并且不要丢失私钥!)。
我猜您可以检入svn私钥,并且仍然需要密码才能使用它,但是整个设置似乎有些奇怪。
您为什么需要这样做?