使用不带X的gnome-keyring-daemon


25

我想知道是否可以在不使用X的情况下使用gnome-keyring-daemon。通常,它会显示一个图形提示,以获取密钥环的密码。有没有解决的办法?我希望能够使用ubuntu一个而不必启动图形会话并输入密码。

Answers:


11

您可以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“ mypassword” | gnome-keyring-daemon-登录

(您仍然需要运行守护程序-通过PAM或使用--daemonize


第二种情况是我的情况。该--login选项(未记录?)非常有用,尽管我确定不想将未隐藏的密码保留在脚本中或放在命令行中。从(非shell语言)脚本中以非回显模式进行读取,然后将该输入传递给生成的守护程序,这可能是实现此目的的一种好方法。每次启动时,我只需要启动一次此过程,因此输入密码很有意义。我只需要能够在命令行而不是通过GTK对话框来做到这一点。
直觉

1
嗯..没关系,它记录在案gnome-keyring-daemon --help。我只是检查了联机帮助页和/ usr / share / doc。
直觉

2
@intuited:好吧,然后read -rsp "Password: " pass; echo -n "$pass" | gnome-keyring-daemon --login在脚本中执行以下操作:
grawity 2010年

是的,这确实可行;我忘记了回声是内置的。
直觉

回复@intuited的旧评论:gnome-keyring-daemon --help给了我很好的概述,但man gnome-keyring-daemon只包含对程序本身的简短说明,但没有参数。
Feeela 2012年

10

概要

已经为我们的Linux服务器执行了安装具有密钥环支持的svn和安装Collabnet keyring_tool应用程序的必要工作。

1)配置SVN客户端使用密钥环:

1.1)编辑〜/ .subversion / config

[auth]
password-stores = gnome-keyring

1.2)编辑〜/ .subversion /服务器

[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隧道完成的,并且没有Red Hat支持的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会话

他们的关键是使用Collabnet keyring_tool在没有gnome-keyring-manager客户端的情况下创建密钥环,并自行建立dbus-launch,而不是让SVN处理设置。SVN使用DBUS连接到gnome-keyring-daemon并影响整体身份验证。通过使用-sh-syntax手动启动和拆除dbus会话,可以避免尝试在dbus启动时连接到X客户端。如果您只是启动gnome-keyring-daemon并尝试使用SVN,它仍会提示您输入密钥环密码,但同时也会提示您输入SVN凭据。由于缺少X客户端,SVN尝试启动dbus时会失败;显然,SVN在启动dbus时不使用任何特殊标志。


非常感谢您这样做,一直在努力摆脱git pull上的“严重**:与gnome-keyring-daemon通信时出错”错误。您对〜/ .profile和〜/ .bash_logout所做的更改解决了该问题。(Ubuntu 16.04.1 LTS)
克里斯·B

1

首先,您真正想做的是严格从命令行运行Ubuntu One。查看Ubuntu One常见问题解答。该FAQ说,这是目前不可能,但也有像一些CLI工具u1sdtoolu1sync。在Launchpad上的Ubuntu One上还有一套常见问题解答;内容可能与早期的wiki.ubuntu.com链接相同。

关于您对gnome-keyring-daemon的实际问题,常见问题解答建议(1)设置自动登录和(2)将您的钥匙圈密码与登录密码同步。这将(理论上),避免密码提示,但需要至少一个基本的X-会议上运行。

Launchpad上有一个Ubuntu One bug / wishlist,它要求更轻松地处理无头系统。显然,建议从源代码进行构建以进行轻量级安装(以避免需要所有GUI库等)。 这个评论很老,但是特别有趣:

问题是我们使用python-gnomekeyring。为了支持无头显示器,我们必须切换到python-keyring,并处理在无头显示器上存储标记(而不是gnome-keyring)。但是,对于Karmic封装,由于冻结,这些都不会发生,并且此更改在SRU中是不可接受的。

对于Lucid,我们应该有一个更强大的身份验证服务,这应该使我们能够更好地支持无头显示器。

我无法确定Lucid是否已经真正使用了这种“更强大的身份验证服务”。基于软件包的依赖关系,似乎Ubuntu One客户端仍然依赖python-gnomekeyring。


0

我成功地使mysql-workbench在x转发的SSH会话中与gnome-keyring一起工作。这是一个使用公钥身份验证的帐户(无密码)。

连接到ssh会话后,我使用dbus-run-session来实现此目的:

dbus-run-session bash -c 'GNOME_KEYRING_CONTROL=1 mysql-workbench --verbose'

希望这些信息对某人有用!


这有助于使mysql-workbench在docker容器中运行并将显示导出到我的Mac主机更近一步。当我尝试向新连接添加密码时,会提示我,但输入密码后,我得到:“无法执行程序org.freedesktop.secrets:不允许执行操作”。有什么线索吗?
里卡多·佩斯乔塔
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.