(OP的环境未知,因此此处给出的路径是在我的Ubuntu机器上找到的路径)
gnome-keyring在哪里设置SSH_AUTH_SOCK?
要回答标题中的主要问题,可以/usr/share/upstart/sessions/gnome-keyring-ssh.conf
使用以下命令通过gnome-keyring设置SSH_AUTH_SOCK :
initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
引用initctl
手册:
initctl set-env VARIABLE[=VALUE]
在作业环境表中添加或更新变量。以这种方式设置的变量将应用于该作业的所有后续启动过程。
-g
, --global
在全局作业环境表和所有现有的正在运行的作业环境表上进行操作。
SSH_AUTH_SOCK首先来自哪里?
initctl
上面的命令的条件是环境变量SSH_AUTH_SOCK已经存在。那么,这是鸡肉和鸡蛋的情况吗?是什么设置的?
SSH_AUTH_SOCK最初是由原始ssh-agent设置的,该代理在X会话的最开始就启动。引用手册:
创建UNIX域套接字,并将此套接字的名称存储在SSH_AUTH_SOCK
环境变量中。套接字只能由当前用户访问。
但是,gnome-keyring的ssh组件所做的是将其自身替换为现有的ssh-agent。因此,它将使用自己的套接字覆盖SSH_AUTH_SOCK,/run/user/.../keyring-.../ssh
以便应用程序与其进行通信,而不是与ssh-agent进行通信。
如何禁用它
现在,让我们回答最后一句话“我希望禁用该功能”。OP想要的是禁用gnome-keyring中ssh组件对SSH_AUTH_SOCK的覆盖。他们想找回ssh-agent最初设置的“ true” SSH_AUTH_SOCK变量。
ssh组件由上述(/usr/share/upstart/sessions/gnome-keyring-ssh.conf
)相同的启动脚本启动,但有一个条件:X-GNOME-Autostart-enabled=false
不能在以下两个文件中找到该字符串:
- (系统范围的conf)
/etc/xdg/autostart/gnome-keyring-ssh.desktop
- (用户配置文件)
~/.config/autostart/gnome-keyring-ssh.desktop
因此,如果要禁用它,您所要做的就是X-GNOME-Autostart-enabled=false
在其中一个文件中添加一行,最好是在HOME目录中的其中一个文件中。