Joh*_*hnW 11 gnome gnome-keyring openssh ssh-agent
我正在摆脱gnome-keyring
作为 SSH 代理的身份。
rm
-ed 所有与 SSH 相关的自动启动内容。最后一件事神奇地起作用了,因为那里不再有代理的套接字:
/run/user/[uid]/keyring/ssh
Run Code Online (Sandbox Code Playgroud)
剩下的问题是,尽管我获得美妙的上述结果,一些在gnome-keyring
仍然坚持设置SSH_AUTH_SOCK
到现在 不存在上述插座。就像僵尸一样,这些东西永远不会死。
什么是设置该变量以及它在哪里完成?
我希望那个东西应该被禁用。
小智 10
让我猜猜 - 您正在使用 Wayland。我今天遇到了这个问题,并认为我会分享解决方案。
SSH_AUTH_SOCK
由于某种原因,Gnome-Session 对under wayland 进行了硬编码覆盖。请参阅以下提交:https : //github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae
解决方法?设置环境变量来禁用此行为:GSM_SKIP_SSH_AGENT_WORKAROUND=1
。这会使环境设置代码短路。
对于发现此问题并尝试配置 ssh-agent 的人:在我的 ssh-agent 的 systemd 单元文件中,我有以下行:
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"
Run Code Online (Sandbox Code Playgroud)
完整文件如下所示:
[Unit]
Description=SSH Agent
IgnoreOnIsolate=true
[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"
[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)
(OP 的环境未知,所以这里给出的路径是在我的 Ubuntu 机器上找到的路径)
要回答标题中的主要问题,SSH_AUTH_SOCK 由 gnome-keyring/usr/share/upstart/sessions/gnome-keyring-ssh.conf
使用以下命令设置:
initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK
Run Code Online (Sandbox Code Playgroud)
引用initctl
手册:
initctl set-env VARIABLE[=VALUE]
添加或更新作业环境表中的变量。以这种方式设置的变量将应用于作业的所有后续启动流程。
-g
,--global
对全局作业环境表和所有现有的运行作业环境表进行操作。
上述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 设置的“真实”SSH_AUTH_SOCK 变量。
ssh 组件由上述相同的启动脚本 ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf
)启动,但在一个条件下:X-GNOME-Autostart-enabled=false
不得在以下任一文件中找到该字符串:
/etc/xdg/autostart/gnome-keyring-ssh.desktop
~/.config/autostart/gnome-keyring-ssh.desktop
因此,如果您想禁用它,您所要做的就是X-GNOME-Autostart-enabled=false
在这些文件之一中添加一行,最好是在您的 HOME 目录中的那个文件中。
从 Gnome 3.18 开始,套接字似乎存储在~/.cache/keyring-(some random string)/ssh
据猜测,它是由 gnome-keyring-daemon 设置的。
归档时间: |
|
查看次数: |
6699 次 |
最近记录: |