Untuk kenyamanan, metode optimal adalah kombinasi dari jawaban jmtd dan Faheem .
Menggunakan ssh-agent
sendiri berarti bahwa instance baru ssh-agent
perlu dibuat untuk setiap terminal baru yang Anda buka. keychain
ketika 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_profile
atau .bashrc
. Ini memiliki kelemahan karena intializes gantungan kunci Anda segera setelah Anda membuka terminal.
Pendekatan yang lebih fleksibel adalah menggabungkan keychain
dengan tmux
sesi 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 tmux
sesi 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 tmux
sesi khusus itu . Selama sesi itu berlanjut, Anda akan dapat mengakses ssh
kunci - kunci itu dan mendorong ke repositori jarak jauh Anda.
eval
Anda bisa mengetikssh-agent
?