Odpowiedzi:
Jeśli logujesz się do sesji graficznej, zaplanuj rozpoczęcie ssh-agent
podczas uruchamiania sesji. Niektóre dystrybucje już to robią dla Ciebie. Jeśli nie, zorganizuj uruchamianie ssh-agent
ze skryptu uruchamiania sesji lub z menedżera okien. Jak to zrobić, zależy od środowiska pulpitu i menedżera okien. Na przykład, jeśli ręcznie uruchomić menedżera okien, po prostu zastąpić wywołanie my_favorite_wm
przez ssh-agent my_favorite_wm
.
Nie zaczynaj ssh-agent
od .bashrc
lub .zshrc
, ponieważ pliki te są wykonywane przez każdą nową interaktywną powłokę. Miejsce rozpoczęcia ssh-agent
znajduje się w pliku startowym sesji, takim jak .profile
lub .xsession
.
Jeśli chcesz używać tego samego agenta SSH we wszystkich procesach bez względu na to, z którego miejsca się zalogowałeś, możesz ustawić, aby zawsze używał tej samej nazwy gniazda, zamiast używać losowo nazwanego gniazda. Na przykład możesz umieścić to w ~/.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
Prawdopodobnie potrzebujesz programu takiego jak Keychain , który został zaprojektowany do tego właśnie celu. Ze strony podręcznika:
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.
Zastosuj go do środowiska pulpitu lub menedżera okien. Kiedy robiłem to ręcznie w przeszłości z niestandardowym ~/.Xclients
, po prostu użyłem tego jako ostatniego wiersza:
ssh-agent mywindowmanger
Mogą istnieć niektóre DE, które mają własne opcje konfiguracji, chociaż wydaje mi się, że (np.) KDE nie ma. Obecnie wydaje się, że mój został uruchomiony za pomocą kodu z /etc/X11/xinit/xinitrc-common
(prawdopodobnie coś zrobionego przez fedorę), ponieważ jest aktywny dla wszystkich użytkowników niezależnie od DE / WM, a nadrzędna komenda procesu jest $HOME/.Xclients
, ale ten plik się nie odwołuje ssh-agent
(podczas gdy /etc/X11/xinit/xinitrc-common
robi).
Jeśli nie masz ~/.Xclients
, możesz utworzyć taki z tylko jedną linią, ale musisz znać polecenie, które uruchamia DE / WM.
$? -ge 2
ponieważ kod wyjścia 1 występuje, gdy ssh-agent nie ma kluczy, ale ssh-agent już działa.