我有一个systemd用户服务文件~/.config/systemd/user/ssh-agent.service,其目的是确保我始终处于ssh-agent运行状态,并将特定的无密码 SSH 密钥加载到其中。它目前看起来像这样:

[Unit]
Description=SSH key agent

[Service]
Type=oneshot
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 $MYSSH

[Install]
WantedBy=default.target

在我的系统启动后,我检查是否ssh-agent已启动ps -aux | grep "ssh",并返回以下内容:

myuser       535  0.0  0.0   8008  5104 ?        Ss   15:22   0:00 /usr/bin/ssh-agent -D -a /run/user/1000/ssh-agent.socket

但是,当我检查密钥是否已按预期添加时ssh-add -l,我得到了The agent has no identities.

现在,我可以验证/usr/bin/ssh-add $MYSSH手动执行是否符合我的预期,因此这似乎不是问题。因此,我使用以下命令检查服务状态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: activating (start) since Tue 2024-09-17 15:22:27 EDT; 1h 18min ago
 Invocation: 6509facc63a8488780f5674e11c865f6
   Main PID: 535 (ssh-agent)
      Tasks: 1 (limit: 8976)
     Memory: 1.1M (peak: 1.5M)
        CPU: 6ms
     CGroup: /user.slice/user-1000.slice/user@1000.service/app.slice/ssh-agent.service
             └─535 /usr/bin/ssh-agent -D -a /run/user/1000/ssh-agent.socket

Sep 17 15:22:27 mySystem systemd[525]: Starting SSH key agent...
Sep 17 15:22:27 mySystem ssh-agent[535]: SSH_AUTH_SOCK=/run/user/1000/ssh-agent.socket; export SSH_AUTH_SOCK;
Sep 17 15:22:27 mySystem ssh-agent[535]: echo Agent pid 535;

我注意到ssh-add这里没有提到命令,并且服务只是挂在该activating状态,即使代理已启动并正在运行。

似乎该ExecStartPost语句从未触发。我通过将该行更改为来测试该语句本身是否存在问题

ExecStartPost=/usr/bin/echo Hello, world.

并重新启动。Echo 从未执行,并且来自的响应systemctl --user status ssh-agent.service与之前相同。

0