Przejdź do treści

SSH Secure Enclave: klucz SSH, którego nie da się skopiować z Maca

Okładka z nagłówkiem Klucz SSH, którego nie da się skopiować z Maca, ilustracją klucza i trzema polami: DWIE DROGI sc_auth albo Secretive, WYMAGANIA macOS Sequoia+, KOSZT 0 PLN; pieczątka PORADNIK KROK PO KROKU

Klucz SSH na Macu to zwykły plik. Siedzi w ~/.ssh, ma atrybut 600 i całą ochronę opiera na uprawnieniach systemu plików. Temat ochrony kluczy w sprzętowym enclave’u Maca wrócił 11 listopada na pierwszą stronę Hacker News z ponad 350 punktami, autor posta Serge Gatezh opisał w nim metodę bez instalowania czegokolwiek, a polskie wyszukiwanie pokazuje, że ludzie wpisują rodziny fraz „ssh secure enclave” i „mac ssh key secure enclave” bez żadnej polskiej odpowiedzi w wynikach. Ten tekst ją zapełnia: dwie drogi, natywna w terminalu i prostsza przez darmową aplikację Secretive, lista pułapek, które wyrzucają błędy, oraz uczciwe rozgraniczenie, co ta metoda chroni, a czego nie. Jedno zastrzeżenie od razu: nie mam pod ręką Maca z Apple Silicon, więc cały opis opieram na poście Gatezh zaktualizowanym 11 listopada, dokumentacji OpenSSH w dystrybucji Apple i repozytorium Secretive, z datami odczytów przy każdym twierdzeniu.

Najważniejsze informacje

CoSzczegóły
WymaganiaMac ze Secure Enclave i macOS Sequoia lub nowszy (Sequoia i Tahoe wg posta Gatezh)
Cena0 zł, natywnie w systemie; aplikacja Secretive darmowa, licencja MIT
Typ kluczawymuszony sk-ecdsa-sha2-nistp256, czyli P-256; RSA i ed25519 odpadają
Touch IDwymagane przy każdym użyciu klucza (flaga -t bio); można dodać Apple Watch w Secretive
Backupniemożliwy, klucz nie opuszcza sprzętu; potrzeba drugiego klucza zapasowego
Ścieżka natywnasc_auth create-ctk-identity, potem ssh-keygen -w /usr/lib/ssh-keychain.dylib
Ścieżka z GUISecretive 4.0.0 z 21 września 2026, 9,3 tys. gwiazdek na GitHubie, brew install secretive
Status w Polscezero polskich poradników (Google News, odczyt 11 listopada); interfejs i dokumentacja po angielsku

Co Secure Enclave robi z kluczem SSH

Punkt odniesienia: zwykły klucz ed25519 wygenerowany przez ssh-keygen. Klucz prywatny powstaje w pamięci komputera, ląduje jako plik id_ed25519 w katalogu ~/.ssh i od tej chwili wszystko zależy od dyscypliny: uprawnień do pliku i tego, czy przypadkowa kopia nie pojedzie w backupie na zewnętrzny serwer. Oprogramowanie szpiegujące z uprawnieniami użytkownika potrafi odczytać taki plik i wyjechać z nim na serwer atakującego w sekundzie. Secretive otwiera dokumentację prosto od tego scenariusza: zwykły klucz na dysku jest „fine in most cases”, ale „it’s not super hard for malicious users or malware to copy your private key” (odczyt README 11 listopada).

Secure Enclave odwraca mechanikę. To izolowany podprocesor na chipie Maka, odseparowany od systemu macOS i jego pamięci. Klucz prywatny generowany w Enclave nie powstaje w RAM systemu i nie istnieje jako plik; na dysku ląduje tylko tak zwany key handle, referencja bezużyteczna na innym komputerze. Dokumentacja OpenSSH opisuje ten model wprost dla kluczy sprzętowych typu ecdsa-sk: klucz składa się z części przechowywanej w pliku na dysku oraz „per-device private key that is unique to each FIDO authenticator and that cannot be exported from the authenticator hardware” (strona podręcznika ssh-keygen z dystrybucji OpenSSH Apple, odczyt 11 listopada).

OpenSSH ma obsługę kluczy sprzętowych FIDO od dawna i sam typ ecdsa-sk w nazwie to wskazówka: to klucz wymagający autentykatora, który przy każdej sygnaturze potwierdza obecność użytkownika. Dokumentacja protokołu OpenSSH tłumaczy, że taki autentykator może „require indication of user presence for each signature operation”, typowo dotknięciem, a podpis zawiera licznik pozwalający wykryć klonowanie klucza (PROTOCOL.u2f, odczyt 11 listopada). macOS od Sequoi udostępnia własny Secure Enclave jako taki autentykator dla ssh-keygen przez bibliotekę /usr/lib/ssh-keychain.dylib i framework CryptoTokenKit. Czyli sprzęt, który od lat pilnuje odcisków palców i kluczy Apple Pay, może pilnować też kluczy SSH, bez kupowania YubiKeya.

Jak utworzyć klucz SSH w Secure Enclave bez instalowania czegokolwiek

Ta ścieżka pochodzi z posta Gatezh, który opisał ją 12 lutego 2026 i zweryfikował ponownie przy aktualizacji 11 listopada na Sequoi i Tahoe. Wszystkie komendy są jego, ja je tylko tłumaczę po polsku i dodaję kontekst. Pierwszy krok tworzy tożsamość w CryptoTokenKit:

  1. Komenda sc_auth create-ctk-identity -l "ssh-MacBook" -k p-256-ne -t bio. Etykieta -l to twoja nazwa klucza widoczna potem w systemie, parametr -k p-256-ne wybiera krzywą P-256 w wersji nieeksportowalnej, a -t bio każe żądać Touch ID przy każdym użyciu. Jeśli komenda wyrzuci błąd errKCAuthFailed, Gatezh radzi usunąć i dodać odcisk palca od nowa w ustawieniach systemowych, w sekcji Touch ID i hasło, u niego to zadziałało.
  2. Komenda ssh-keygen -w /usr/lib/ssh-keychain.dylib -K -N "" wyciąga z systemu key handle nowej tożsamości. Przy pytaniu o PIN wystarczy Enter. Powstają pliki id_ecdsa_sk_rk i id_ecdsa_sk_rk.pub, które przenosisz do ~/.ssh.
  3. Do ~/.zshrc dodajesz linię export SSH_SK_PROVIDER=/usr/lib/ssh-keychain.dylib, żeby ssh i ssh-keygen wiedziały, gdzie szukać dostawcy kluczy sprzętowych.
  4. Klucz publiczny trafia standardowo do authorized_keys na serwerze, czyli ssh-copy-id -i ~/.ssh/id_ecdsa_sk_rk.pub user@serwer.
  5. W ~/.ssh/config dopisujesz dla hosta linię IdentityFile ~/.ssh/id_ecdsa_sk_rk. To krok obowiązkowy, bo ssh szuka automatycznie tylko standardowych nazw jak id_rsa czy id_ed25519 i pliku id_ecdsa_sk_rk sam nie znajdzie.

Od tej chwili każde połączenie kończy się dotknięciem Touch ID, a podpis wykonuje Enclave.

Ścieżka tworzenia klucza SSH w Secure Enclave Maca: sc_auth create-ctk-identity, ssh-keygen z biblioteką ssh-keychain, zmienna SSH_SK_PROVIDER, ssh-copy-id na serwer, IdentityFile w konfiguracji
Ilustracja stylizowana, stan na 12 listopada 2026; komendy z posta gatezh.com zaktualizowanego 11 listopada

Gatezh wspomina w aktualizacji o kosmetycznej irytacji: komunikat systemowy pyta brutalnym językiem, że „ctccardtoken needs to authenticate to continue”, zamiast przyjaznej wiadomości o kluczu SSH. Działa, ładnie nie wygląda.

Secretive: ta sama gwarancja, mniej terminala

Druga droga prowadzi przez aplikację Secretive, darmową i na licencji MIT, z repozytorium, które ma 9,3 tysiąca gwiazdek, a ostatnie wydanie 4.0.0 wyszło 21 września 2026 (odczyty z GitHuba 11 listopada). Instalacja przez brew install secretive albo pobranie z zakładki Releases projektu. Projekt ma audytowalny proces budowania: każdy release powstaje w GitHub Actions z publicznym logiem i od wersji 3.0 z poświadczeniem Artifact Attestation, więc można porównać sumę kontrolną pobranego pliku z logiem wydania.

Robi to samo co ścieżka natywna, tylko w oknie z przyciskami: klikasz generowanie klucza, system prosi o Touch ID albo zatwierdzenie na Apple Watch i masz gotowe parę kluczy w Enclave. Samo FAQ projektu zamyka dwa najczęstsze pytania zanim padną. O przenoszeniu kluczy: „The secure enclave doesn’t allow import or export of private keys. For any new computer, you should just create a new set of keys” (odczyt FAQ 11 listopada). A o tym, czemu nie ma RSA: Secure Enclave Maca obsługuje wyłącznie 256-bitowe klucze EC, więc RSA nie jest możliwy z natury, nie z powodu ograniczenia aplikacji.

Z mojej perspektywy największa praktyczna różnica polega na tym, kto pilnuje dostępu. Secretive podmienia agenta SSH przez zmienną SSH_AUTH_SOCK, terminalowy git i ssh działają od razu, ale aplikacje z własnym klientem SSH potrafią wymagać ręcznej konfiguracji; autorzy utrzymują osobne repozytorium secretive-config-instructions z instrukcjami dla popularnych programów. Przy każdej próbie użycia klucza dostajesz powiadomienie, więc widzisz, kiedy coś podpisało za twoimi plecami, i masz czas zareagować. Forwarding agenta działa normalnie: po ustawieniu ForwardAgent yes w configu zdalny host może korzystać z twoich kluczy, ale każde takie użycie przechodzi przez Secretive na Macu i wymaga biometrii. Odinstalowanie jest zwykłe, ikona do kosza i skasowanie kontenera ~/Library/Containers/com.maxgoedjen.Secretive.SecretAgent. Sam Gatezh po przetestowaniu natywnej metody został przy Secretive właśnie z powodu brzydkiego promptu Touch ID; metodę natywną ocenia jednak jako w pełni funkcjonalną.

Co jeśli nie działa

Większość zgłoszonych problemów ma proste przyczyny i prostsze rozwiązania. Błąd errKCAuthFailed przy tworzeniu tożsamości leczy ponowna rejestracja odcisku w ustawieniach, jak wyżej. Gdy ssh twierdzi, że nie ma klucza, chociaż pliki są w ~/.ssh, brakuje linii IdentityFile w configu albo zmiennej SSH_SK_PROVIDER; komenda ssh -Tv user@serwer pokaże, o który z tych dwóch wariantów chodzi, bo wypisze próbne ścieżki i dostawców. Konflikt z menedżerem haseł 1Password to osobna kategoria: aplikacja podmienia agenta SSH przez ustawienie IdentityAgent w configu, więc klucza z Enclave po prostu nie odpyta. Trzeba na czas używania klucza wyłączyć ten wpis albo ustawić priorytet agenta.

Dla aplikacji git z własnym stosikiem SSH odpowiedź jest w FAQ Secretive: zależność od SSH_AUTH_SOCK i odesłanie do repozytorium z instrukcjami konfiguracji. Osobny scenariusz dotyczy Apple Watch: aplikacja pyta o hasło zamiast pokazać zatwierdzenie na zegarku. FAQ radzi włączenie opcji „Use your Apple Watch to unlock apps and your Mac” w ustawieniach bezpieczeństwa, zablokowanie i odblokowanie Maka przynajmniej raz, a potem zatwierdzanie dwuklikiem bocznego przycisku zegarka. Na maszynie bez Secure Enclave żadna z dwóch ścieżek nie zadziała; Secretive pozwala wtedy skonfigurować klasyczną kartę, na przykład YubiKey, która przejmuje rolę autentykatora sprzętowego. Na starszych maszynach z Intelem trzeba najpierw sprawdzić, czy dany model w ogóle ma Enclave, bo tam nie jest to oczywistość. Wspólny mianownik diagnostyki: komenda ssh -Tv wypisuje, którego agenta i którego pliku klucza używa, i na tym lepiej opierać zgłoszenia niż na zgadywaniu.

Co z tej gwarancji jest, a czego nie

Uczciwie o tym, czego ta metoda nie daje, bo tytułowe „nie da się skopiować” łatwo czytać za szeroko. Secure Enclave chroni przed zabraniem klucza z maszyny. Nie chroni przed użyciem klucza na maszynie: złośliwy proces z uprawnieniami użytkownika może poprosić Enclave o podpis wybranego żądania. Barierą jest wtedy Touch ID, bo metoda natywna z flagą -t bio i Secretive pytają o biometrię przy każdym użyciu, ale żeby ta bariera znaczyła cokolwiek, nie zatwierdzasz żądań, których nie rozumiesz, i czytasz powiadomienia Secretive. Komputer już przejęty przez atakującego jest komputerem, który może wykonywać operacje pod twoją tożsamością, niezależnie od miejsca przechowywania klucza.

Druga granica to brak backupu, i to jest cena, którą płaci się świadomie. Klucz nie da się wyeksportować, więc pad tego Maca oznacza utratę dostępu do serwerów pod tym kluczem. Ratunkiem jest zwykła redundancja: drugi klucz z osobnej maszyny (albo YubiKey) zapisany w authorized_keys na zapas, przygotowany zanim będzie potrzebny. Gatezh pisze o tym wprost jako o konsekwencji, którą trzeba zaakceptować, a FAQ Secretive zamienia ją w procedurę: nowy komputer, nowy zestaw kluczy, stare pozycje w authorized_keys do usunięcia.

Ile kosztuje i czy jest po polsku

Koszt wynosi zero złotych na obu ścieżkach. Metoda natywna używa wyłącznie komponentów systemowych, sc_auth i ssh-keygen są w macOS, a Secretive jest darmową aplikacją open source z licencją MIT bez wersji płatnej. Nie ma tu subskrypcji, limitów ani kont, które trzeba zakładać, warunkiem jest tylko sprzęt i system od Sequoi wzwyż.

Po polsku nie ma nic: ani jednej notki prasowej o tym, że temat wrócił na Hacker News (Google News PL dla frazy „ssh secure enclave”, odczyt 11 listopada: zero wyników), ani polskiego poradnika, ani polskiego interfejsu. Secretive nie ma tłumaczenia na polski, dokumentacja i komunikaty są angielskie, a terminologia sprzętowa typu Secure Enclave czy key handle po prostu zostaje z oryginału. Polski autocomplet Google pokazuje w tym temacie głównie formy angielskie, czyli „ssh secure enclave” i „macos ssh key secure enclave”, podczas gdy rodzina „klucz ssh co to” czy „klucz ssh github” opisuje osobny, ogólny temat kluczy SSH, ten konkurencyjny i zapełniony. Ostrzeżenie praktyczne: aplikacje instaluj wyłącznie z repozytorium GitHub projektu albo Homebrew, bo fraza na tyle zyskuje na popularności, że prędzej czy później ktoś postawi pod nią coś niepowołanego. W szerszym kontekście bezpieczeństwa narzędzi developerskich pisałem o backdoorze w Claude Code i samozatwierdzających się wtyczkach Postmana, tam jest ten sam schemat zaufania do komponentów, które wchodzą w tryb pracy programisty.

Najczęstsze pytania

Czy klucz ssh secure enclave da się skopiować?

Nie. Klucz prywatny powstaje w Secure Enclave i nie opuszcza sprzętu, na dysku siedzi tylko key handle, bezużyteczny na innym komputerze. Dokumentacja OpenSSH pisze wprost, że klucz per-device „cannot be exported from the authenticator hardware”. Pamiętaj jednak o różnicy między skopiowaniem a użyciem: oprogramowanie na zainfekowanym Macu może prosić Enclave o podpis, barierą jest Touch ID przy każdej operacji.

Jak zrobić mac ssh key secure enclave?

Dwie drogi. Natywnie: sc_auth create-ctk-identity tworzy tożsamość w CryptoTokenKit, ssh-keygen -w /usr/lib/ssh-keychain.dylib -K wyciąga key handle, dodajesz SSH_SK_PROVIDER i IdentityFile w configu. Prościej: darmowa aplikacja Secretive, która generuje klucz w Enclave z Touch ID i Apple Watch bez terminala. Obie wymagają macOS Sequoia lub nowszego.

Czy ssh key secure enclave przeżyje wymianę Maca?

Nie, i to świadoma cecha projektu. Kluczy z Secure Enclave nie da się eksportować ani importować, więc przy nowym komputerze tworzysz nowy zestaw kluczy, a stare pozycje usuwasz z authorized_keys. Żeby nie stracić dostępu do serwerów przy awarii Maca, miej w authorized_keys drugi klucz zapasowy z osobnej maszyny albo YubiKey.

Czy ssh secure enclave działa po polsku?

Nie ma polskiego interfejsu ani polskich materiałów. Mechanizm jest systemowy w macOS, komunikaty Touch ID są angielskie, a Secretive nie ma polskiego tłumaczenia. Fraza szukana najczęściej po polsku to zresztą angielska forma „ssh secure enclave”, więc polski tekst niczego tu nie psuje.

Źródła

Powiązane artykuły