Untuk kenyamanan, metode optimal adalah kombinasi dari jawaban jmtd dan Faheem .
Menggunakan ssh-agentsendiri berarti bahwa instance baru ssh-agentperlu dibuat untuk setiap terminal baru yang Anda buka. keychainketika diinisialisasi akan meminta frasa sandi untuk kunci pribadi dan menyimpannya. Dengan begitu kunci pribadi Anda dilindungi kata sandi tetapi Anda tidak perlu memasukkan kata sandi berulang kali.
The Arch wiki merekomendasikan inisialisasi gantungan kunci dari /etc/profile.d/atau profil shell Anda, seperti .bash_profileatau .bashrc. Ini memiliki kelemahan karena intializes gantungan kunci Anda segera setelah Anda membuka terminal.
Pendekatan yang lebih fleksibel adalah menggabungkan keychaindengan tmuxsesi tertentu . Jadi, di .bash_profile:
tsess=$(tmux ls 2>&1)
if [[ "${tsess%%:*}" = "secured" ]] &&
[[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
# start keychain
/usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
. $HOME/.keychain/$HOSTNAME-sh
fi
... dan kemudian itu hanya kasus memulai tmuxsesi aman saat dan ketika diperlukan (diluncurkan dari keybind):
#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"
if [[ -z "$SSH_AUTH_SOCK" ]]; then
eval `ssh-agent`
trap "kill $SSH_AGENT_PID" 0
fi
if [[ -z "$PID" ]]; then
urxvtc -title "SSH" -e sh -c "${new}"
else
urxvtc -title "SSH" -e sh -c "${old}"
fi
ssh-add
Sekarang, gantungan kunci Anda hanya akan diinisialisasi satu kali ketika Anda memulai tmuxsesi khusus itu . Selama sesi itu berlanjut, Anda akan dapat mengakses sshkunci - kunci itu dan mendorong ke repositori jarak jauh Anda.
evalAnda bisa mengetikssh-agent?