Skip to content

Arch linux手动编写ssh-agent服务

步骤

1. 在systemd相关目录下编写service

spheenik的回答中,是将service写在~/.config/systemd/user/ssh-agent.service中。
我按照个人习惯,写到了/etc/systemd/user/ssh-agent.service中。

shell
[Unit]
Description=SSH key agent

[Service]
Type=simple
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target

2. 设置环境变量

将服务导出的socket放到SSH_AUTH_SOCK变量中

shell
export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"

3. 启动并立即打开服务

需要加上--user参数,不然会提示找不到ssh-agent的service。

shell
systemctl --user enable ssh-agent
systemctl --user start ssh-agent

4. 修改sshconfig

在~/.ssh/config中添加AddKeyToAgent参数

properties
AddKeysToAgent yes

完整示例

properties
# 假设git远程url是git@xxxx:www
# 私钥文件路径为/my/pk/path.key
Host fakename
    HostName xxxx
    User git
    AddKeysToAgent yes
    IdentityFile /my/pk/path.key

5. 拉取代码

按照第4部的配置,拉取代码时需要将xxxx替换为fakename。

shell
git clone git@fakename:www

参考

Start ssh-agent on login [closed]