如何开始ssh代理作为系统服务?网上有一些建议,但并不完整。
如何自动添加未加密的密钥,如果ssh代理服务启动成功?也许,从列表中添加键
~/.ssh/.session-keys
会很好。之后如何
SSH_AUTH_SOCK
在任何登录会话中设置?最正确的方法是推ssh代理服务于系统登录服务(不知道是否可能)。最简单的方法就是将其添加到/etc/profile
.
答案1
- 要创建 systemd
ssh-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。
这将指示 ssh 客户端始终将密钥添加到正在运行的代理,因此无需事先echo 'AddKeysToAgent yes' >> ~/.ssh/config
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 用户支持在交付时被破坏