Chcę umieścić ssh-add /path/to/special_key
na górze skryptu. Działa to dobrze, ale zawsze monituje o podanie hasła. Jest to dziwne i trochę denerwujące, ponieważ wciąż prosi o hasło, nawet jeśli ssh-add -l
pokazuje, że klucz został już dodany.
Czy istnieje sposób, aby to powiedzieć: „dodaj ten klucz i zapytaj hasło, jeśli jeszcze nie zostało dodane, w przeciwnym razie nic nie rób”?
shell-script
ssh
ssh-agent
Darren Cook
źródło
źródło
Odpowiedzi:
Nie widzę żadnych opcji dodawania ssh, które pomagają osiągnąć pożądany rezultat, ale dość łatwo jest obejść ten problem, biorąc pod uwagę, że martwisz się w szczególności jednym kluczem.
Najpierw chwyć odcisk palca dla klucza specjalnego:
Powiedzmy, że ten odcisk palca wygląda jak 6d: 98: ed: 8c: 07: 07: fe: 57: bb: 19: 12: 89: 5a: c4: bf: 25
Następnie u góry skryptu użyj,
ssh-add -l
aby sprawdzić, czy ten klucz jest załadowany, zanim pojawi się monit o dodanie:Możesz złożyć to wszystko razem w jedną linię, jeśli chcesz:
źródło
ssh-keygen
(w końcu nie chcę generować żadnych kluczy), zamiast tego używa ścieżki klucza:ssh-add -l | grep -q 'path/to/key' || ssh-add /path/to/key
ssh-keygen
w odpowiedzi nie generuje klucza - tak jakssh-add -l
w twoim przykładzie tak naprawdę nic nie dodaje. Flagi modyfikują zachowanie poleceń, aby nie pasowały dokładnie do nazwy. Zauważ, że te wersje różnią się funkcjonalnie - jeśli sprawdzanie ścieżki i klucz przy tej ścieżce ulegnie zmianie, twoja wersja go nie odbierze. Wersja w odpowiedzi wykryłaby również istniejący klucz bez względu na to, skąd został załadowany.Nie ma bezpośredniego sposobu sprawdzenia za pomocą samego,
ssh-add
ale możesz skorzystać zssh-keygen
niektórych skryptów do sprawdzenia.Powyższe wydrukowałoby się wtedy,
yes
gdyby odcisk palca reprezentowany przez plik/path/to/special_key
był obecny nassh-add -l
wyjściu.Przykład
Gdzie zawartość danych wyjściowych
ssh-keygen -lf /path/to/special_key
wygląda następująco:I używamy `awk '{print $ 2}', aby wybrać tylko drugą kolumnę, która zawiera odcisk palca, tj .:
Bibliografia
źródło
Możesz mieć szczególne powody, aby używać
ssh-add
jawnie, ale jeśli chcesz tylko „Chcę otrzymać monit o moje hasło przy pierwszym użyciu klucza, ale nie później”, openssh ma prostsze rozwiązanie:Umieść
AddKeysToAgent yes
w swoim.ssh/config
pliku.źródło
ssh-add -K FILE
działało dobrze dla mnie na komputerze Mac.Nadal pokazuje linie „Tożsamość dodana:”, ale nie prosi o hasło.
Ze strony podręcznika:
źródło