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?

Oczywiście nie wolałbym klucza SSH bez hasła.

Odpowiedzi:


26

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.

naprawdę jak ten!
Colin D

Świetny! Dziękuję Ci. Działa świetnie.
Ktoś

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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.