没有x会话的gnome密钥用法
我的用例是,我有一台无头服务器,可以在该服务器上进行软件开发。我通常为与它的SSH连接启用X11转发,但是无法为连接较慢的遥远位置启用X11转发。 我需要安全的存储和git凭据缓存,因为我经常在树中使用18-20个存储库,因此我将git-credential-gnome-keyring用作git credential.helper,它使用libgnome-keyring进行通信到gnome-keyring-daemon。为了测试解决方案,我安装了一台带有监视器的PC,确认默认情况下该系统上的密钥环有效,然后使用SSH进行了尝试。它与X11转发一起使用,但没有它就无法工作。 在没有X11转发的情况下进行连接时,查询密钥环时会出现以下错误,并且该工具将退回到命令行提示符下: ** (process:18305): CRITICAL **: Error communicating with gnome-keyring-daemon 调查表明,基本问题是gnome-keyring-daemon期望连接使用dbus与之对话。如果没有X11会话,则dbus不会启动,因此,没有用于gnome-keyring-daemon和libgnome-keyring连接的通用dbus总线。 我找到了两个其他解决方案发布给该问题的解决方案,尽管它们都不适合我。 从使用X11的现有会话中获取DBUS端口 手动启动新的DBUS端口 连接到现有DBUS端口时,基本概念是查找现有登录会话的PID,从procfs中转储该PID的环境,在中搜索DBUS_SESSION_BUS_ADDRESS,然后在当前环境中将其导出。由于这是用于发布会话中所有对象正在使用的DBUS总线的变量,因此设置该值将允许会话中的所有对象在公共DBUS总线上进行通信,尽管它是与其他会话相关联的总线。 此处的来源: https : //ubuntuforums.org/showthread.php ? t = 1059023 https://ask.fedoraproject.org/en/question/45246/error-communication-with-gnome-keyring-daemon-in-ssh-会话/ 添加到我的.bashrc的代码在ssh登录时执行: if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] ; then local myPID=`pgrep "(.*session|fluxbox)" | head -n1` if [ -n "$myPID" ] ; then local myVar=`cat /proc/${myPID}/environ …