Dostęp do pęku kluczy w systemie MacOS jest przechowywany bez końca na kluczu SSH

0

Dla wygody chciałbym, aby MacOS trzymał się mojego hasła RSA, ale nie w nieskończoność (ze względu na bezpieczeństwo). Wierzę, że SSH użyje dostępu do pęku kluczy z tą konfiguracją SSH

Host *
     UseKeychain true

I wierzę, że użyje ssh-agent w tej konfiguracji:

Host *
     AddKeysToAgent yes

Kilka pytań:

  1. Wygląda na to, że istnieją dwie opcje: ssh-agent lub Keychain Access . Jeśli potrzebujesz wygody tymczasowego przechowywania haseł, jaki jest standard?
  2. 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
  3. Jaka jest najlepsza opcja, jeśli chcę regularnie usuwać hasła klucza prywatnego? Mogłem użyć ssh-add -D w ramach zadania cron
Charlie Hileman
źródło

Odpowiedzi:

1

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.

  1. 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 yesdyrektywy w swoim ~/.ssh/config, każdy program łączący się z ssh-agentgniazdem pozwoli ssh-agentdotrzeć do pęku kluczy w celu odszyfrowania klucza prywatnego. Jeśli również użyć do AddKeysToAgent yesdyrektywy, 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.

  1. 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ł sshklucze 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).

  1. Jaka jest najlepsza opcja, jeśli chcę regularnie usuwać hasła klucza prywatnego? Mógłbym skorzystać ssh-add -Dz zadania cron.

Gdybyś mógł ssh-add -Dwykonać zadanie crona i prawdopodobnie zrobiłby to, co chcesz, nie usunąłby haseł z pęku kluczy. Wyczyściłoby to tylko pamięć ssh-agentwszystkich odszyfrowanych kluczy prywatnych. Jeśli masz UseKeychain yesw swojej konfiguracji, ssh-agentz 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 UseKeychaini AddKeysToAgent, jak w:

Host *
  UseKeychain no
  AddKeysToAgent no

Następnie ręcznie dodaj klucze do swojego biegu ssh-agentz 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/configaby 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.

szkarłatna czapla
źródło