Kolaylık sağlamak için, en uygun yöntem cevapların bir kombinasyonudur jmtd ve Faheem .
Tek ssh-agent
başına kullanmak , ssh-agent
açtığınız her yeni terminal için yeni bir ihtiyaç örneğinin oluşturulması gerektiği anlamına gelir . keychain
başlatıldığında, özel anahtar (lar) ın şifresini isteyecek ve saklayacaktır. Bu şekilde özel anahtarınız şifre korumalıdır, ancak şifrenizi tekrar tekrar girmek zorunda kalmazsınız.
Arch wiki gelen anahtarlık başlatılıyor önerir /etc/profile.d/
gibi veya kabuk profil .bash_profile
veya .bashrc
. Bu, bir terminal açtığınız anda anahtarlığınızı güçlendirmesi açısından bir dezavantajdır.
Daha esnek bir yaklaşım, keychain
belirli bir tmux
oturumla birleştirmektir . Yani, içinde .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
... ve sonra güvenli tmux
oturumu gerektiği gibi ve gerektiğinde başlatmak için bir durumdur (bir anahtardan başlatılır):
#!/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
Şimdi, anahtarlığınız belirli bir tmux
oturuma başladığınızda yalnızca bir kez başlatılacak . Bu oturum devam ettiği sürece, bu ssh
tuşlara erişebilecek ve uzak havuzlarınıza gidebileceksiniz.
eval
Sadece yazabileceğin nokta nessh-agent
?