运行 SSH 代理服务时出现“无法打开与身份验证代理的连接”错误

问题描述 投票:0回答:1

我设置了以下用户服务单元文件,以确保我始终可以访问 Github:

[Unit]
Description=SSH key agent

[Service]
Type=exec
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
Environment=DISPLAY=:0
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/ssh-add $GITHUBSSH

[Install]
WantedBy=default.target

如果我运行

systemctl --user status ssh-agent.service
,我会看到以下内容:

● ssh-agent.service - SSH key agent
     Loaded: loaded (/home/myUser/.config/systemd/user/ssh-agent.service; enabled; preset: enabled)
     Active: active (running) since Fri 2024-10-25 20:10:27 EDT; 18h ago
 Invocation: 0b625b5fa3ed4386ab696da6979876ac
   Main PID: 2044 (ssh-agent)
      Tasks: 1 (limit: 16673)
     Memory: 1.7M (peak: 3.2M)
        CPU: 31ms
     CGroup: /user.slice/user-1001.slice/[email protected]/app.slice/ssh-agent.service
             └─2044 /usr/bin/ssh-agent -D -a /run/user/1001/ssh-agent.socket

Oct 25 20:10:27 fitzgeraldManjaro systemd[2010]: Starting SSH key agent...
Oct 25 20:10:27 fitzgeraldManjaro ssh-agent[2044]: SSH_AUTH_SOCK=/run/user/1001/ssh-agent.socket; export SSH_AUTH_SOCK;
Oct 25 20:10:27 fitzgeraldManjaro ssh-agent[2044]: echo Agent pid 2044;
Oct 25 20:10:27 fitzgeraldManjaro ssh-add[2047]: Identity added: /home/myUser/.ssh/fitzgeraldManjaroGithub ([email protected]>
Oct 25 20:10:27 fitzgeraldManjaro systemd[2010]: Started SSH key agent.

ps -aux | grep 'ssh'
确认 PID 2044 正在运行并且确实是
ssh-agent
命令。

但是,如果我运行

ssh-add -l
,则会收到
Could not open a connection to your authentication agent
错误。如果我检查设置了此似乎用户服务的另一台计算机,我会得到相同的状态响应,并且
ssh-add -l
返回预期结果:我告诉它自动加载的密钥。该服务每次使用上述配置都可以正常工作,无需调用
eval "$(ssh-agent -s)"

如果我在失败的计算机上运行

id
,我当前的用户将拥有
uid=1001
,它与状态消息的 CGroup 行相匹配。

如果我使用

ssh-agent
启动不同的
eval "$(ssh-agent -s)"
进程,那么我可以手动添加密钥(尽管这当然违背了服务的目的);奇怪的是,如果我终止这个
ssh-agent
进程,当我运行
ssh-add -l
时,我会开始收到不同的错误消息,其中显示
Error connecting to agent: No such file or directory

ssh service ssh-agent
1个回答
0
投票

要使 SSH 代理正常工作,您必须设置

SSH_AUTH_SOCK
环境变量并指向 SSH 代理套接字。 AFAIK,
ssh-agent -k
依赖包含代理 PID 的
SSH_AGENT_PID
才能正常工作。

ssh-agent.service
无法正确导出 ENV,因此您应该将其添加到您的
~/.profile
,可能需要检查套接字是否确实存在 (
if [ -S "/run/user/$UID/ssh-agent.socket" ]; then ...
),但这可能会导致其自身的问题。

© www.soinside.com 2019 - 2024. All rights reserved.