Jak sprawić, aby ssh-agent działał na wszystkich terminalach?
27
Skonfigurowałem automatyczne (bez hasła) logowanie ssh do niektórych serwerów za pomocą ssh-copy-id. ssh-agentdziała tylko z terminala, w którym został uruchomiony. Jak mogę ssh-addpracować we wszystkich moich terminalach?
Jeśli logujesz się do sesji graficznej, zaplanuj rozpoczęcie ssh-agentpodczas uruchamiania sesji. Niektóre dystrybucje już to robią dla Ciebie. Jeśli nie, zorganizuj uruchamianie ssh-agentze 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_wmprzez ssh-agent my_favorite_wm.
Nie zaczynaj ssh-agentod .bashrclub .zshrc, ponieważ pliki te są wykonywane przez każdą nową interaktywną powłokę. Miejsce rozpoczęcia ssh-agentznajduje się w pliku startowym sesji, takim jak .profilelub .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
Do sprawdzenia, dlatego sprawdza, $? -ge 2ponieważ kod wyjścia 1 występuje, gdy ssh-agent nie ma kluczy, ale ssh-agent już działa.
wisbucky
7
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.
działa to świetnie, po pobraniu skompresowanego pliku z Github, upewnij się, że dodajesz pełną ścieżkę nieskompresowanego katalogu pęku kluczy-2.8.5 do swojego eksportu ~ / .bash_profile ŚCIEŻKA = $ ŚCIEŻKA: linia
Kevin Zhao
4
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-commonrobi).
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.Prawdopodobnie potrzebujesz programu takiego jak Keychain , który został zaprojektowany do tego właśnie celu. Ze strony podręcznika:
źródło
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: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łujessh-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.źródło