Zanim zaczniemy, wyjaśnijmy kilka punktów:
- MacOS pozwoli ci przechowywać hasła klucza prywatnego w pęku kluczy macOS.
- ssh-agent (w systemie MacOS lub dowolnym systemie) przechowuje odszyfrowany klucz prywatny w pamięci .
To rozróżnienie jest ważne, aby odpowiedzieć na twoje pytania.
- Wygląda na to, że istnieją dwie opcje: ssh-agent lub Keychain Access.
Nie dokładnie. Zobacz wyjaśnienie powyżej. Jeśli korzystasz z UseKeychain yes
dyrektywy w swoim ~/.ssh/config
, każdy program łączący się z ssh-agent
gniazdem pozwoli ssh-agent
dotrzeć do pęku kluczy w celu odszyfrowania klucza prywatnego. Jeśli również użyć do AddKeysToAgent yes
dyrektywy, to rozszyfrował klucz będzie przechowywany w środek do wykorzystania w przyszłości. Przydatne także w przypadku innego powiązanego pytania .
... Jeśli potrzebujesz wygody tymczasowego przechowywania haseł, jaki jest standard?
Nie ma (według mojej wiedzy) sposobu na tymczasowe przechowywanie haseł przez macOS . Można jednak uzyskać częściowo satysfakcjonujące rozwiązanie dla prawie tego samego efektu - patrz odpowiedź na pytanie 3 poniżej.
- Jak mogę zidentyfikować i usunąć hasło dla mojego domyślnego klucza prywatnego w programie Dostęp do pęku kluczy? Widzę nienazwany klucz prywatny, ale nie chcę go usuwać bez pewności, że jest to mój przechowywany klucz SSH.
Jeśli otworzysz Dostęp do pęku kluczy na komputerze Mac i wyszukasz ssh
, prawdopodobnie nie zobaczysz hasła klucza ssh. Począwszy od macOS Sierra (10.12), Apple przeniósł ssh
klucze kluczy pęku kluczy, które były przechowywane. Aby to zobaczyć, musisz wybrać „Wyświetl >> Pokaż niewidzialne elementy”, a następnie będą widoczne wpisy hasła klucza ssh.
Prawdopodobnie „nienazwany klucz prywatny”, który widziałeś, to jakiś inny klucz RSA (lub DSA).
- Jaka jest najlepsza opcja, jeśli chcę regularnie usuwać hasła klucza prywatnego? Mógłbym skorzystać
ssh-add -D
z zadania cron.
Gdybyś mógł ssh-add -D
wykonać zadanie crona i prawdopodobnie zrobiłby to, co chcesz, nie usunąłby haseł z pęku kluczy. Wyczyściłoby to tylko pamięć ssh-agent
wszystkich odszyfrowanych kluczy prywatnych. Jeśli masz UseKeychain yes
w swojej konfiguracji, ssh-agent
z przyjemnością ponownie odszyfrujesz klucz następnym razem, gdy będzie to potrzebne (zobacz powyżej odpowiedź na pytanie 1).
Jedną z alternatyw, aby zaspokoić twoje dorozumiane pragnienie, aby nie mieć odszyfrowanych kluczy przez cały czas, jest wyłączenie obu UseKeychain
i AddKeysToAgent
, jak w:
Host *
UseKeychain no
AddKeysToAgent no
Następnie ręcznie dodaj klucze do swojego biegu ssh-agent
z ograniczonymi okresami użytkowania, korzystając z -t <lifetime>
opcji ssh-add
, jak w:
ssh-add -t 4h ~/.ssh/id_rsa
To doda twój (domyślny) klucz RSA do agenta o czasie życia 4 godziny. Po czterech godzinach klucz zostanie automatycznie usunięty.
O ile wiem, nie ma dyrektywy dla użytkownika, ~/.ssh/config
aby określić domyślny czas życia dowolnego klucza dodanego do agenta, ani nie ma sposobu w systemie sshd_config
. Jednak może istnieć sposób na nakazanie macOS, aby uruchomił agenta z domyślnym czasem życia przy użyciu tej -t <lifetime>
opcji. W przypadku nieustraszonego plik plist agenta uruchamiania jest przechowywany w /System/Library/LaunchAgents/com.openssh.ssh-agent.plist
.
Kolejne starsze, prawdopodobnie jeszcze odpowiednie podejście blokuje brelok podczas snu.