Comment démarrer et utiliser ssh-agent comme service systemd?

15
  1. Comment démarrer ssh-agent en tant que service systemd ? Il y a quelques suggestions sur le net, mais elles ne sont pas complètes.

  2. Comment ajouter automatiquement des clés non chiffrées si le service ssh-agent a été démarré avec succès? Probablement, l'ajout de clés dans la liste de ~/.ssh/.session-keysserait bien.

  3. Comment configurer SSH_AUTH_SOCKune session de connexion par la suite? La manière la plus correcte est de la pousser du service ssh-agent vers le service systemd-logind (ne sais pas si c'est possible). La manière naïve est simplement de l'ajouter /etc/profile.

midenok
la source
Que manque-t-il aux suggestions sur le net?
Mark Stosberg

Réponses:

24

Pour créer un service ssh-agent systemd, vous devez créer un fichier ~/.config/systemd/user/ssh-agent.servicecar ssh-agent est isolé par l'utilisateur.

[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

Ajouter SSH_AUTH_SOCK DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket"à ~/.pam_environment.

Enfin, activez et démarrez ce service.

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

Et, si vous utilisez une version ssh supérieure à 7.2. echo 'AddKeysToAgent yes' >> ~/.ssh/config

Cela demandera au client ssh de toujours ajouter la clé à un agent en cours d'exécution, il n'est donc pas nécessaire de l'ajouter au préalable.

Notez que lorsque vous créez le ~/.ssh/configfichier, vous devrez peut-être exécuter:

chmod 600 ~/.ssh/config ou chown $USER ~/.ssh/config

Sinon, vous pourriez recevoir l' Bad owner or permissions on ~/.ssh/configerreur.

Abner Zhang
la source
launchdsous OS X est configuré pour démarrer ssh-agent lors de l'accès à un socket Unix (et la SSH_AUTH_SOCKvariable est préremplie avec le chemin ...) (comme inetd, mais un socket Unix). Cela semble également possible systemd. (Il peut être intéressant de voir si un service à l'échelle du système est une option pour un service par utilisateur ...)
Gert van den Berg
Je reçois Failed to execute operation: Process org.freedesktop.systemd1 exited with status 1quand je cours systemctl --user enable ssh-agentsur centos7
scarba05