Bagaimana cara memulai dan menggunakan ssh-agent sebagai layanan systemd?

15
  1. Bagaimana cara memulai ssh-agent sebagai layanan systemd ? Ada beberapa saran di internet, tetapi tidak lengkap.

  2. Bagaimana cara menambahkan kunci yang tidak terenkripsi secara otomatis jika layanan ssh-agent berhasil dimulai? Mungkin, menambahkan kunci dari daftar ~/.ssh/.session-keysakan bagus.

  3. Bagaimana cara mengatur SSH_AUTH_SOCKsesi login setelahnya? Cara yang paling benar adalah dengan mendorongnya dari layanan ssh-agent ke layanan systemd-logind (tidak tahu apakah itu mungkin). Cara polos naif hanya menambahkannya /etc/profile.

midenok
sumber
Apa yang hilang dari saran di internet?
Mark Stosberg

Jawaban:

24

Untuk membuat layanan systemd ssh-agent, Anda perlu membuat file ~/.config/systemd/user/ssh-agent.servicekarena ssh-agent diisolasi oleh pengguna.

[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

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

Akhirnya aktifkan dan mulai layanan ini.

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

Dan, jika Anda menggunakan versi ssh lebih tinggi dari 7.2. echo 'AddKeysToAgent yes' >> ~/.ssh/config

Ini akan menginstruksikan klien ssh untuk selalu menambahkan kunci ke agen yang sedang berjalan, jadi tidak perlu menambahkan ssh terlebih dahulu.

Perhatikan bahwa saat Anda membuat ~/.ssh/configfile, Anda mungkin harus menjalankan:

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

Kalau tidak, Anda mungkin menerima Bad owner or permissions on ~/.ssh/configkesalahan.

Abner Zhang
sumber
launchdpada OS X diatur untuk memulai ssh-agent ketika soket Unix diakses (dan SSH_AUTH_SOCKvariabel sudah diisi sebelumnya dengan path ...) (seperti inetd, tetapi soket Unix). Ini sepertinya juga mungkin systemd. (Apakah layanan sistem-lebar merupakan pilihan untuk layanan per-pengguna mungkin menarik untuk dilihat ....)
Gert van den Berg
Saya dapatkan Failed to execute operation: Process org.freedesktop.systemd1 exited with status 1ketika saya berlari systemctl --user enable ssh-agentpada centos7
scarba05