Wie starte und verwende ich ssh-agent als systemd-Dienst?

14
  1. Wie starte ich ssh-agent als systemd- Dienst? Es gibt einige Vorschläge im Netz, aber sie sind nicht vollständig.

  2. Wie füge ich automatisch unverschlüsselte Schlüssel hinzu, wenn der Dienst ssh-agent erfolgreich gestartet wurde? Wahrscheinlich ~/.ssh/.session-keyswäre es gut , Schlüssel aus der Liste von hinzuzufügen .

  3. Wie SSH_AUTH_SOCKstelle ich danach eine Anmeldesitzung ein? Der korrekteste Weg ist, es vom ssh-agent- Dienst zum systemd-logind- Dienst zu verschieben (ich habe keine Ahnung, ob es jemals möglich ist). Der einfach naive Weg ist es, ihn zu addieren /etc/profile.

midenok
quelle
Was fehlt in den Vorschlägen im Netz?
Mark Stosberg

Antworten:

23

Um einen systemd ssh-agent-Dienst zu erstellen, müssen Sie eine Datei in erstellen, ~/.config/systemd/user/ssh-agent.serviceda ssh-agent vom Benutzer isoliert ist.

[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

Hinzufügen SSH_AUTH_SOCK DEFAULT="${XDG_RUNTIME_DIR}/ssh-agent.socket"zu ~/.pam_environment.

Aktivieren und starten Sie diesen Dienst schließlich.

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

Und wenn Sie eine ssh-Version höher als 7.2 verwenden. echo 'AddKeysToAgent yes' >> ~/.ssh/config

Dadurch wird der ssh-Client angewiesen, den Schlüssel immer einem ausgeführten Agenten hinzuzufügen, sodass er nicht vorher mit ssh hinzugefügt werden muss.

Beachten Sie, dass Sie beim Erstellen der ~/.ssh/configDatei möglicherweise Folgendes ausführen müssen:

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

Andernfalls erhalten Sie möglicherweise den Bad owner or permissions on ~/.ssh/configFehler.

Abner Zhang
quelle
launchdunter OS X ist so eingestellt, dass ssh-agent gestartet wird, wenn auf einen Unix-Socket zugegriffen wird (und die SSH_AUTH_SOCKVariable mit dem Pfad vorbelegt ist ...) (wie inetdaber ein Unix-Socket). Dies scheint auch mit möglich systemd. (Ob ein systemweiter Dienst eine Option für einen Pro-Benutzer-Dienst ist, kann sich sehen lassen.)
Gert van den Berg
Ich bekomme, Failed to execute operation: Process org.freedesktop.systemd1 exited with status 1wenn ich systemctl --user enable ssh-agentauf Centos7 laufen
scarba05
0

Dies wird nicht unterstützt, wenn Sie Centos 7 verwenden, da das --userFlag von nicht unterstützt wird systemctl. Lesen Sie diesen Centos-Fehlerbericht, Systemd User Support ist bei Lieferung defekt

scarba05
quelle