如何启动并使用 ssh-agent 作为 systemd 服务?

如何启动并使用 ssh-agent 作为 systemd 服务?
  1. 如何开始ssh代理作为系统服务?网上有一些建议,但并不完整。

  2. 如何自动添加未加密的密钥,如果ssh代理服务启动成功?也许,从列表中添加键~/.ssh/.session-keys会很好。

  3. 之后如何SSH_AUTH_SOCK在任何登录会话中设置?最正确的方法是推ssh代理服务于系统登录服务(不知道是否可能)。最简单的方法就是将其添加到/etc/profile.

答案1

  • 要创建 systemdssh-agent服务,您需要创建一个文件,~/.config/systemd/user/ssh-agent.service因为ssh-agent它是用户隔离的。
    [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
    
  • 添加
    SSH_AUTH_SOCK="${XDG_RUNTIME_DIR}/ssh-agent.socket"
    
    ~/.config/environment.d/ssh_auth_socket.conf
  • 最后启用并启动该服务。
    systemctl --user enable --now ssh-agent
    
  • 并且,如果您使用的 ssh 版本高于 7.2。
    echo 'AddKeysToAgent  yes' >> ~/.ssh/config
    
    这将指示 ssh 客户端始终将密钥添加到正在运行的代理,因此无需事先ssh-add添加。

请注意,创建文件时~/.ssh/config您可能需要运行:

chmod 600 ~/.ssh/config

或者

chown $USER ~/.ssh/config

否则,您可能会收到Bad owner or permissions on ~/.ssh/config错误。

答案2

如果您使用的是 centos 7,则不支持此功能,因为它不--user支持systemctl.请参阅此 centos 错误报告,Systemd 用户支持在交付时被破坏

相关内容