Jakiś czas temu w StackOverflow zadałem to pytanie dotyczące ssh-agent i crontab . Mam podobne pytanie dotyczące ssh-agent i screena w systemach Linux.
Tak więc na moim Macu ssh-agent uruchamia się przy starcie systemu, więc zawsze jest dla mnie dostępny. Myślę, że byłoby to prawdą w moim systemie Linux (redhat el5 / fedora), gdybym korzystał z X-Windows. Jest to jednak zdalny serwer i zawsze loguję się przez ssh.
Chciałbym mieć poprawnie skonfigurowane klucze ssh, aby nie musiałem wpisywać hasła wiele razy podczas aktualizacji svn lub zatwierdzania. Z przyjemnością wpisuję moje hasło raz na sesję i zniechęcam nasz zespół do posiadania kluczy SSH bez hasła.
Przez krótki lśniący moment wydawało się, że wykonanie polecenia „eval` ssh-agent -s` ”w moim .bash_profile, w połączeniu z poleceniem zabicia ssh-agent po wylogowaniu, zadziałałoby. Jednak intensywnie wykorzystujemy ekran do zarządzania długo działającymi programami interaktywnymi i środowiskami programistycznymi. Jeśli uruchomisz i zatrzymasz ssh-agent, tak jak to właśnie opisałem, zostanie zabity, gdy wyjdziesz z terminala, a podsekcje ekranu, które kiedyś odnosiły się do tej instancji ssh-agent, zostaną porzucone.
Więc ... jak mogę być użytkownikiem konsoli, który używa screena, który używa hasła ze swoimi kluczami ssh, który nie musi ciągle wpisywać hasła?
źródło
/etc/conf.d/local
(lub ekwiwalent) dla każdego użytkownika korzystającego z agenta, aby uruchomić osobnyssh-agent
proces dla każdego użytkownika. Jeśli, jak mówisz, nie masz ogromnej liczby użytkowników, nie byłoby źle. Podnosisz dobrą rację (o której zapomniałem wziąć pod uwagę) na temat sesji terminalowych dołączanych do agenta; zobacz moją edycję odpowiedzi.Sprawdź pęku kluczy . Robi to wszystko powyżej. Spójrz szczególnie na opcje
--clear
i--timeout
.źródło
Lepszym rozwiązaniem jest użycie przekazywania agenta ssh (
-A
opcja). Pozwala to osobie używającej ssh na używanie kluczy od agenta ssh działającego na maszynie, z której pochodzą, prawdopodobnie na stacji roboczej, na której faktycznie siedzą.źródło
aby śledzić przekazywanie agenta ssh, domyślnie przekierowane poświadczenia ssh nie będą dostępne dla sesji ekranowej po wylogowaniu, zalogowaniu się i ponownym dołączeniu do sesji.
Można jednak obejść ten problem, ustawiając zmienną środowiskową SSH_AUTH_SOCK na coś dobrze znanego i aktualizując tę znaną lokalizację do bieżącego gniazda uwierzytelniania.
Używam tej funkcji powłoki, aby ponownie wejść do ekranu i naprawić ssh auth sock:
i mam to w moim .screenrc:
Mam nadzieję że to pomoże.
źródło
Jeśli dobrze cię zrozumiałem, po prostu chcesz sesji ekranowej, którą czasami odłączasz i dołączasz ponownie, ale nigdy więcej nie chcesz ponownie wprowadzać haseł do ssh-agent (hasło klucza prywatnego).
Myślę, że najprostszym sposobem jest uruchomienie ekranu, niż uruchomienie ssh-agent za pomocą podpowłoki, a następnie pozostanie w tej podpowłoce. To znaczy
źródło