我想知道是否可以不使用 X 来使用 gnome-keyring-daemon。通常它会显示一个图形提示以获取密钥环的密码;有办法解决这个问题吗?我希望能够使用 ubuntu one,而不必启动图形会话并输入我的密码。
答案1
您可以使用pam_gnome_keyring.so
来启动和解锁守护进程。GDM 已经执行了此操作;对于login
,您必须手动配置它。
将这些行添加到/etc/pam.d/login
:
auth 可选 pam_gnome_keyring.so 会话可选 pam_gnome_keyring.so auto_start
如果您不使用密码登录(使用 Kerberos 或公钥的 SSH),则可能工作:(我还没有测试过)
echo -n “我的密码”| gnome-keyring-daemon --login
(您仍然需要守护进程运行 - 通过 PAM 启动或使用 启动--daemonize
。)
答案2
概要
我们已经在 Linux 服务器上完成了安装带有密钥环支持的 svn 和安装 Collabnet keyring_tool 应用程序的必要工作。
1)配置 SVN 客户端使用密钥环:
1.1)编辑~/.subversion/config
[auth]
password-stores = gnome-keyring
1.2)编辑~/.subversion/servers
[global]
store-passwords = yes
store-plaintext-passwords = no
2) 为您的密码创建一个密钥环。系统将提示您创建一个新密码来解锁密钥环;这可能是您想要的任何密码:
keyring_tool --create=svn
3)将新的密钥环设置为默认密钥环:
keyring_tool --setdef=svn
4)在 .bash_profile 或 .bash_login 中(假设您使用 bash 作为终端)
if [ -e /usr/bin/gnome-keyring-daemon ]; then
if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
# Create dbus transport link for SVN to talk to the keyring.
eval `dbus-launch --sh-syntax`
# Start the keyring daemon.
# The use of export here captures the GNOME_KEYRING_PID, GNOME_KEYRING_SOCK
# env values echoed out at startup.
export `/usr/bin/gnome-keyring-daemon`
fi
fi
5)在 .bash_logout 中
# Kill the message bus established for SVN / Keyring communication
if [ ! -z "`kill -0 $DBUS_SESSION_BUS_PID 2>&1`" ]; then
kill $DBUS_SESSION_BUS_PID > /dev/null 2>&1
fi
# Kill the Gnome Keyring Daemon prior to logout.
if [ ! -z "`kill -0 $GNOME_KEYRING_PID 2>&1`" ]; then
kill $GNOME_KEYRING_PID > /dev/null 2>&1
fi
背景
我在尝试建立一种无忧的方式来确保授权用户访问工作中的某些 SVN 存储库时遇到了类似的问题。基本上,每次用户访问服务器时,我们都必须强制进行凭据检查,因此即使是 svn update 命令也需要身份验证。显然,纯文本密码存储是行不通的,所以经过一番研究,我发现使用 gnome-keyring 可以避免通过不断的身份验证请求骚扰我们的用户群,同时仍将未经授权的用户挡在他们无权查看的存储库之外。
我们日常工作的大部分内容都是通过 ssh 隧道连接到不支持 X 的 RedHat 服务器,因此我必须找到一种绕过 X11 支持的方法。经过一番搜索,我设法在这里找到了解决方法:
源材料
这里的关键是使用 Collabnet keyring_tool 创建一个没有 gnome-keyring-manager 客户端的密钥环,并自行建立 dbus-launch,而不是让 SVN 处理设置。SVN 使用 DBUS 连接到 gnome-keyring-daemon 并影响整体身份验证。通过使用 -sh-syntax 手动启动和关闭 dbus 会话,您可以避免在 dbus 启动时尝试连接到 X 客户端。如果您只是启动 gnome-keyring-daemon 并尝试使用 SVN,它仍会提示您输入密钥环密码,但随后也会提示您输入 SVN 凭据。当 SVN 尝试启动 dbus 时,由于缺少 X 客户端,dbus 将失败;显然 SVN 在启动 dbus 时不使用任何特殊标志。
答案3
我在 x-forwarded SSH 会话中成功让 mysql-workbench 与 gnome-keyring 协同工作。这是一个使用公钥身份验证(无密码)的帐户。
一旦连接到 ssh 会话,我使用 dbus-run-session 来实现此目的:
dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'
希望这些信息对某些人有用!
答案4
首先,你真正想要做的是严格从命令行运行 Ubuntu One。查看Ubuntu One 常见问题解答。 这常见问题解答说目前还无法实现,但有一些 CLI 工具,例如u1sd工具和u1sync. 还有一个常见问题解答在 Launchpad 上的 Ubuntu One 上;内容可能与之前的 wiki.ubuntu.com 链接相同。
关于你的实际问题gnome-keyring-守护进程, 这常见问题解答(1)设置自动登录,(2)将密钥环密码与登录密码同步。这(理论上)可以避免输入密码提示,但会至少需要运行一个基本的 X-session。
有一个Ubuntu One 错误/愿望清单在 Launchpad 上,要求使其更容易处理无头系统。显然,建议从源代码构建以进行轻量级安装(以避免需要所有 GUI 库等)。 这条评论虽然很古老,但特别有趣:
问题是我们使用 python-gnomekeyring。为了支持无头显示器,我们必须切换到 python-keyring,并在无头显示器上处理将令牌存储在 gnome-keyring 以外的某个地方。但是,由于 Karmic 包装已被冻结,因此这些都不会发生,并且这种变化在 SRU 中是不可接受的。
对于 Lucid,我们应该有更强大的身份验证服务,这应该使我们能够更好地支持无头显示器。
我无法判断这种“更强大的身份验证服务”是否真的为 Lucid 实施;基于软件包依赖关系,似乎 Ubuntu One 客户端仍然依赖于 python-gnomekeyring。