Mam klucz prywatny chroniony hasłem, aby uzyskać dostęp do serwera za pośrednictwem SSH.
Mam 2 maszyny linux (ubuntu 10.04), a zachowanie komendy ssh-add w obu jest różne.
Na jednym komputerze, kiedy użyję „ssh-add .ssh / tożsamość” i wprowadzę hasło, klucz został dodany na stałe, tj. Za każdym razem, gdy zamykam komputer i loguję się, klucz jest już dodawany.
W drugim muszę dodawać klucz przy każdym logowaniu.
O ile pamiętam, zrobiłem to samo na obu. Jedyną różnicą jest to, że klucz został utworzony na tym, który został dodany na stałe.
Czy ktoś wie, jak dodać go również na stałe na innym komputerze?
Odpowiedzi:
Rozwiązaniem byłoby wymuszenie trwałego przechowywania plików kluczy poprzez dodanie ich do
~/.ssh/config
pliku:Jeśli nie masz pliku „config” w katalogu ~ / .ssh, powinieneś go utworzyć. Nie potrzebuje praw root, więc po prostu:
... i wprowadź powyższe wiersze zgodnie ze swoimi wymaganiami.
Aby to zadziałało, plik musi mieć chmod 600. Możesz użyć polecenia
chmod 600 ~/.ssh/config
.Jeśli chcesz, aby wszyscy użytkownicy na komputerze korzystali z klucza, umieść te wiersze
/etc/ssh/ssh_config
i klucz w folderze dostępnym dla wszystkich.Dodatkowo, jeśli chcesz ustawić klucz specyficzny dla jednego hosta, możesz wykonać następujące czynności w ~ / .ssh / config:
Ma to tę zaletę, gdy masz wiele tożsamości, że serwer cię nie odrzuca, ponieważ najpierw próbowałeś podać nieprawidłowe tożsamości. Wypróbowana zostanie tylko określona tożsamość.
źródło
chmod 600 config
ssh-add ~/.ssh/gitHubKey
, zapamięta twoje kluczowe hasło. Rozwiązaniem, które zaproponowałem, było ustawienie go na stałe podczas ponownego uruchamiania.To nie rozwiązało tego samego problemu w systemie Mac OS X Lion. W końcu dodałem:
Do mojego .zshrc (ale .profile też byłoby w porządku), co wydaje się naprawiać.
(Jak sugerowano tutaj: http://geek.michaelgrace.org/2011/09/permanently-add-ssh-key-ssh-add/ )
źródło
ForwardAgent yes
do mojego.ssh/config
) fantastycznie rozwiązało ten problem. Jak się okazuje,ssh-add &>/dev/null
domyślnym zachowaniemssh-add
może być dodawanie kluczy znalezionych w.ssh
folderze.-K
dodaje klucze do pęku kluczy OS X, których GUI używają do uwierzytelniania na obcych serwerach. Plakat w tym Q łączy się przez tunel SSH, ale nadal łączy się tylko ze zdalnym serwerem. A - [Tunel SSH] -> B W tym przypadku jestem na zdalnym serwerze, ale chcę, aby uwierzytelnianie odbywało się na podstawie poświadczeń w moim systemie domowym. A <- [Auth] - B - [Connect] -> C Więc-K
tak naprawdę nie pomaga, ale jest świetnym rozwiązaniem dla drugiego pytania.Rozwiązałem ten problem w Mac OSX (10.10), używając opcji -K dla ssh-add:
W systemie MacOS 10.12 i nowszych musisz dodatkowo edytować konfigurację ssh zgodnie z opisem tutaj: https://github.com/jirsbek/SSH-keys-in-macOS-Sierra-keychain
źródło
man ssh-add
macOS High Sierrassh-add -K
zapisze hasło w pęku kluczy, a po ponownym uruchomieniu wystarczy użyćssh-add -A
, który nie wymaga wprowadzania hasła.Wystarczy dodać pęku kluczy, o którym mowa w szybkich poradach Ubuntu https://help.ubuntu.com/community/QuickTips
Co
Zamiast ciągłego uruchamiania ssh-agent i ssh-add, można używać pęku kluczy do zarządzania kluczami ssh. Aby zainstalować pęku kluczy, możesz po prostu kliknąć tutaj lub użyć Synaptic do wykonania zadania lub apt-get z wiersza poleceń.
Wiersz poleceń
Innym sposobem zainstalowania pliku jest otwarcie terminala (Aplikacja-> Akcesoria-> Terminal) i wpisanie:
Edytuj plik
Następnie należy dodać następujące wiersze do $ {HOME} /. Bashrc lub /etc/bash.bashrc:
źródło
.
jest pseudonim dlasource
Wypróbowałem rozwiązanie @ Aaron i to nie do końca działało, ponieważ dodawało moje klucze za każdym razem, gdy otwierałem nową kartę w moim terminalu. Więc trochę go zmodyfikowałem (zauważ, że większość moich kluczy jest również chronionych hasłem, więc nie mogę po prostu wysłać danych wyjściowych do / dev / null):
W ten sposób sprawdza dane wyjściowe
ssh-add -l
(które zawierają wszystkie klucze, które zostały dodane) dla określonego klucza, a jeśli go nie znajdzie, dodaje go za pomocąssh-add
.Teraz, kiedy otwieram terminal po raz pierwszy, pojawia się pytanie o hasło do moich kluczy prywatnych i nie pojawia się ono ponownie, dopóki nie zrestartuję komputera (lub wyloguję się - nie sprawdziłem).
Ponieważ mam kilka kluczy, przechowuję dane wyjściowe
ssh-add -l
w zmiennej, aby poprawić wydajność (przynajmniej tak sądzę, poprawia to wydajność :))PS: Jestem na Linuksie i ten kod poszedł do mojego
~/.bashrc
pliku - jeśli używasz Mac OS X, zakładam, że powinieneś dodać go do.zshrc
lub.profile
EDYCJA: Jak wskazał @Aaron w komentarzach,
.zshrc
plik jest używany zzsh
powłoki - więc jeśli go nie używasz (jeśli nie jesteś pewien, najprawdopodobniej używaszbash
zamiast tego), ten kod powinien przejdź do swojego.bashrc
pliku.źródło
.zshrc
jest dlazsh
powłoki, której używam zamiastbash
. Jeśli używaszbash
w systemie Mac OS X (domyślnie), to też.bashrc
tam będzie.ssh-add -l
kodem powrotuecho $?
mogą być wykorzystane do podjęcia decyzji, czy dodać klucz czy nie. Jestem moją maszyną z linuksem z bash,ssh-add -l
nie wypisze nazwy pliku klucza. Kod powrotu zawsze działa.W moim przypadku rozwiązaniem było:
Jak wspomniano w komentarzach powyżej przez generalopinion
Nie trzeba dotykać zawartości pliku konfiguracji.
źródło
~/.ssh/config
plik do odczytu / zapisu dla użytkownika, a nie do zapisu przez innych.Miałem ten sam problem z Ubuntu 16.04: niektóre klucze zostały dodane na stałe, dla innych musiałem wykonać
ssh-add
każdą sesję. Dowiedziałem się, że klucze, które zostały dodane na stałe, miały zarówno klucz prywatny, jak i publiczny,~/.ssh
a klucze zapomniane podczas każdej sesji miały tylko klucze prywatne w~/.ssh
reż. Rozwiązanie jest proste: przed wykonaniem należy skopiować zarówno klucz prywatny, jak i publiczny .~/.ssh
ssh-add
PS: O ile rozumiem z wiki Gnome, moja metoda działa dzięki narzędziu gnome-keyring, które jest częścią Gnome Desktop Environment. Dlatego moja metoda prawdopodobnie powinna działać tylko wtedy, gdy używasz Gnome lub DE opartej na Gnome.
źródło
Dodanie następujących wierszy w „~ / .bashrc” rozwiązało problem. Używam pulpitu Ubuntu 14.04.
źródło
W Ubuntu 14.04 (może wcześniej, a może nadal) nie potrzebujesz nawet konsoli:
seahorse
lub uruchom szukaną rzecz „klucz”ssh
spowoduje pobranie tożsamości (tj. klucza) za pośrednictwem agentassh
ją-A
lub ustaw jako domyślnąźródło
Uruchamiam Ubuntu za pomocą dwóch kluczy id_rsa. (jeden osobisty do pracy). ssh-add zapamięta jeden klucz (osobisty) i za każdym razem zapomni o firmie.
Sprawdzając różnicę między tymi dwoma, zobaczyłem, że mój klucz osobisty miał 400 praw, podczas gdy firmowy miał 600 praw. (miał u + w). Usunięcie zapisu użytkownika bezpośrednio z klucza firmowego (uw lub ustawionego na 400) naprawiło mój problem. ssh-add pamięta teraz oba klucze.
źródło
To zadziałało dla mnie.
źródło
bardzo proste ^ _ ^ dwa kroki
1. zainstaluj brelok
2. dodaj kod poniżej do .bash_profile
źródło
Dla tych, którzy używają powłoki Fish, możesz użyć następującej funkcji, a następnie wywołać ją w
~/.config/fish/config.fish
lub w osobnym pliku konfiguracyjnym w~/.config/fish/conf.d/loadsshkeys.fish
. Załaduje wszystkie klucze zaczynające się od id_rsa dossh-agent
.Jeśli chcesz, aby
ssh-agent
auto było uruchamiane po otwarciu terminala, możesz to zrobić za pomocą tuvistavie / fish-ssh-agent .źródło