Bagaimana saya membuat ssh-agent bekerja di semua terminal?

27

Saya telah mengatur login ssh otomatis (kurang kata sandi) ke beberapa server menggunakan ssh-copy-id. ssh-agenthanya bekerja dari terminal tempat ia dijalankan. Bagaimana saya bisa ssh-addbekerja di semua terminal saya?

Secara alami, saya tidak akan memilih kunci SSH tanpa frasa sandi.

Gowtham
sumber

Jawaban:

26

Jika Anda masuk ke sesi grafis, atur untuk memulai ssh-agentsaat startup sesi Anda. Beberapa distribusi sudah melakukannya untuk Anda. Jika milik Anda tidak, atur untuk lari ssh-agentdari skrip startup sesi Anda atau dari window manager Anda. Bagaimana melakukannya tergantung pada lingkungan desktop Anda dan window manager Anda. Misalnya, jika Anda memulai manajer jendela secara manual, cukup ganti panggilan my_favorite_wmdengan ssh-agent my_favorite_wm.

Jangan mulai ssh-agentdari .bashrcatau .zshrc, karena file-file ini dijalankan oleh setiap shell interaktif baru. Tempat untuk memulai ssh-agentadalah file startup sesi seperti .profileatau .xsession.

Jika Anda ingin menggunakan agen SSH yang sama pada semua proses di mana pun Anda masuk, Anda dapat membuatnya selalu menggunakan nama soket yang sama, alih-alih menggunakan soket yang diberi nama secara acak. Misalnya, Anda dapat meletakkan ini di ~/.profile:

export SSH_AUTH_SOCK=~/.ssh/ssh-agent.$HOSTNAME.sock
ssh-add -l 2>/dev/null >/dev/null
if [ $? -ge 2 ]; then
  ssh-agent -a "$SSH_AUTH_SOCK" >/dev/null
fi
Gilles 'SANGAT berhenti menjadi jahat'
sumber
FYI, alasan ia memeriksa $? -ge 2adalah karena kode keluar 1 adalah ketika ssh-agent tidak memiliki kunci, tetapi ssh-agent sudah berjalan.
wisbucky
7

Anda mungkin menginginkan program seperti Keychain , yang dirancang untuk tujuan yang tepat ini. Dari halaman manual:

DESCRIPTION
   keychain is a manager for ssh-agent, typically run from ~/.bash_profile.
   It allows your shells and cron jobs to share a single ssh-agent process.
snapshoe
sumber
sangat suka yang ini!
Colin D
Besar! Terima kasih. Bekerja dengan sempurna.
Seseorang
ini berfungsi dengan baik, setelah mengunduh file terkompresi dari Github, pastikan Anda menambahkan path lengkap direktori uncompressed keychain-2.8.5 ke ekspor ~ / .bash_profile PATH = $ PATH: line
Kevin Zhao
4

Terapkan ke lingkungan desktop atau window manager Anda. Ketika saya melakukan ini secara manual di masa lalu dengan kustom ~/.Xclients, saya hanya menggunakan ini sebagai baris terakhir:

ssh-agent mywindowmanger

Mungkin ada beberapa DE yang memiliki opsi pengaturan sendiri untuk ini, meskipun bagi saya tampaknya (misalnya) KDE tidak. Saat ini, tampaknya milik saya dijalankan melalui kode dari /etc/X11/xinit/xinitrc-common(mungkin sesuatu dilakukan oleh fedora), karena itu aktif untuk semua pengguna terlepas dari DE / WM dan perintah proses induknya $HOME/.Xclients, tetapi file itu tidak referensi ssh-agent(padahal /etc/X11/xinit/xinitrc-commontidak).

Jika Anda tidak memiliki ~/.Xclients, Anda bisa membuatnya hanya dengan satu baris, tetapi Anda harus mengetahui perintah yang memulai DE / WM Anda.

goldilocks
sumber