Как запустить и использовать ssh-agent в качестве службы systemd?

15
  1. Как запустить ssh-agent как службу systemd ? В сети есть некоторые предложения, но они не полны.

  2. Как автоматически добавить незашифрованные ключи, если служба ssh-agent была успешно запущена? Возможно, ~/.ssh/.session-keysбыло бы неплохо добавить ключи из списка .

  3. Как установить SSH_AUTH_SOCKв любой сессии входа в систему впоследствии? Самый правильный способ - переместить его из службы ssh-agent в службу systemd-logind (не знаю, возможно ли это). Простой наивный способ - просто добавить его к /etc/profile.

midenok
источник
Чего не хватает в предложениях в сети?
Марк Стосберг

Ответы:

24

Чтобы создать службу ssh-агента systemd, вам нужно создать файл, ~/.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 установлен запуск ssh-agent при обращении к сокету Unix (и SSH_AUTH_SOCKпеременная предварительно заполнена путем ...) (как inetd, но сокет Unix). Это кажется возможным и с systemd. (Было бы интересно узнать, является ли общесистемный сервис опцией для каждого пользователя ....)
Герт ван ден Берг
Я получаю, Failed to execute operation: Process org.freedesktop.systemd1 exited with status 1когда я бегу systemctl --user enable ssh-agentна centos7
scarba05