Trwa krótka dyskusja na temat istniejącej ssh-agent -t
funkcji w [1], a już w 2001 r. Pojawił się post na temat debian-devel [2], który pragnąłby funkcji limitu czasu braku aktywności. Podobna dyskusja tutaj na SE [3] dla widowiska.
Muszę się zastanawiać, jak reszta planety chroni klucze ssh - czy brakuje mi czegoś oczywistego, aby był to dla mnie taki problem i najwyraźniej nikt inny? W szczególności myślę o skryptowych interakcjach ssh, na przykład z ansible. Wygląda na to, że dzisiaj masz do wyboru:
- Ustaw czas życia swojego klucza w agencie na niepokojąco długi okres, np. Może się zdarzyć, że będzie to 1 godzina lub jakikolwiek maksymalny czas działania twoich skryptów (wątpię, aby wiele osób zezwoliło na przedłużenie limitu czasu ponownego uruchomienia sudo tak długo!) - ale
seahorse
/gnome-keyring-daemon
ledwo nawet tak bardzo wspiera [4] - Spójrz na swoje długo działające skrypty i ponownie wprowadzaj hasło co 5/10/15 minut: teraz możesz łatwo obserwować wprowadzanie hasła 20 razy dziennie
- Zhakuj własne rozwiązanie do parzenia domowego, aby naśladować tę brakującą funkcję, być może w połączeniu z powłoką
TMOUT
powłoki powłoki (dziękuję ludziom za freenode #openssh IRC za tę sugestię) - W ogóle nie ustawiono okresu istnienia klucza, tzn. Agent utrzymuje klucz wczytywany na zawsze lub do momentu zabicia / ponownego uruchomienia komputera
Jeśli używasz krótkich limitów czasu agenta ssh, silnych haseł i różnych plików kluczy dla każdego rodzaju roli, którą uwierzytelniasz jako: prowadzi to do bardzo frustrującego dnia!
Eksperymentowałem z gpgkey2ssh i kartami inteligentnymi, ale to tak naprawdę nie rozwiązuje tego konkretnego problemu: nadal chcę funkcjonalność ssh-agent i nie chcę ponownie uwierzytelniać co 5 minut, aby zapobiec ujawnieniu moich kluczy prywatnych w pamięci, gdy mój komputer jest bezczynny.
Czy robię to źle?
[1] Konfigurowanie domyślnego limitu czasu dla agenta SSH
[2] https://lists.debian.org/debian-devel/2001/09/msg00851.html
[3] /server/518312/putty-pageant-forget-keys-after-period-of-inactivity
[4] https://bugs.launchpad.net/ubuntu/+source/gnome-keyring/+bug/129231
ssh-agent
aby wiedzieć, kiedy sesja jest nieaktywna, ale przynajmniej zacznij limit czasu od momentu wystąpienia ostatniej operacji podpisywania, a nie tylko od momentu ssh-agent
uruchomienia. Ponadto używam już osobnych kont użytkowników i plików kluczy dla każdej roli skryptu, sudoers pozwala na sudo tylko 1 lub 2 polecenia, jeśli to konieczne, i starałem się to lshell
dalej blokować. Ale to wszystko nadal nie zwalnia mnie z konieczności ochrony moich plików kluczy: tylko dlatego, sudo zfs send
że jedyne polecenie jest dozwolone dla danego klucza, to dość potężne polecenie dla każdego, kto włada tym kluczem!
ControlMaster
/ ControlPath
/ ControlPersist
(patrz man ssh_config
) dla swojego skryptu. Przynajmniej jeśli łączy się tylko z jednym hostem.
ssh-agent
załadowane klucze do momentu ponownego uruchomienia (co może być tygodniami).
ssh-agent
jest ona niezależna od typu sesji, w której jest częścią (np. Sesja tty, sesja X11 lub coś innego). Jedno chciałbym powiedzieć, jeśli twoje zautomatyzowane skrypty prawdopodobnie nie powinny zależeć od klucza załadowanego do twojego agenta. Prawdopodobnie każdy powinien mieć swój własny klucz prywatny, który jest autoryzowany za pomocą poleceń wymuszonych na odpowiednich serwerach, aby uruchamiać tylko określone polecenia zdalne, które musi uruchomić każdy skrypt. To oczywiście pozwoli ci uruchomić te z crona itp.