概要

概要

我想知道是否可以不使用 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 支持的方法。经过一番搜索,我设法在这里找到了解决方法:

源材料

http://support.wandisco.com/index.php?/Knowledgebase/Article/View/362/17/how-to-setup-encrypted-svn-password-storage-using-gnome-keyring-in-an-ssh-session

这里的关键是使用 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 会话中成功让 my​​sql-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。

相关内容