Answers:
要创建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 DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket"
到~/.pam_environment
。
最后启用并启动此服务。
systemctl --user enable ssh-agent
systemctl --user start ssh-agent
并且,如果您使用的ssh版本高于7.2。 echo 'AddKeysToAgent yes' >> ~/.ssh/config
这将指示ssh客户端始终将密钥添加到正在运行的代理中,因此无需预先ssh-添加它。
请注意,创建~/.ssh/config
文件时,可能需要运行:
chmod 600 ~/.ssh/config
要么
chown $USER ~/.ssh/config
否则,您可能会收到此Bad owner or permissions on ~/.ssh/config
错误。
launchd
在OS X上,当访问Unix套接字(并且SSH_AUTH_SOCK
变量预先填充了路径...)时,OS X设置为启动ssh-agent (例如inetd
,但是是Unix套接字)。这似乎也有可能systemd
。(是否可以为每个用户的服务选择是否使用系统范围的服务……)
Failed to execute operation: Process org.freedesktop.systemd1 exited with status 1
,当我运行systemctl --user enable ssh-agent
在centos7
如果您使用的是centos 7,则不支持此功能--user
,因为它将不支持的标志systemctl
。请参阅此centos错误报告,Systemd用户支持在交付时被破坏