Dlaczego Twój VPN na Macu prosi o dostęp do Keychain za każdym razem
Ustal, który komponent wywołuje każde okno VPN na Macu, zatrzymaj powielone próby połączenia i napraw dostęp do Keychain bez resetowania całego pęku kluczy.
Jedno kliknięcie Connect powinno dać jedno okno logowania. Na Macu często daje trzy, a one rzadko mają tego samego właściciela: pęk kluczy jest właścicielem lokalnych próśb o dane logowania, brama VPN jest właścicielem uwierzytelniania, a klient — własnych powiadomień. Zamiast szukać przełącznika, który wszystko wyciszy, traktuj każde okno jako osobny defekt z własną poprawką. Poniższy przewodnik przechodzi przez jedną świadomą próbę połączenia i kończy się sprawdzeniem, które możesz powtórzyć.
Nazwij właściciela każdego okna dialogowego, zanim zmienisz ustawienie
Pierwszy krok to ewidencja, nie konfiguracja. Wykonaj jedną próbę połączenia i dla każdego okna, które się pojawi, zapisz cztery pola: nazwę aplikacji w oknie, dokładny tekst bez niczego tajnego, fazę, w której się pojawiło, i to, co się stało, gdy je anulowałeś. Trzy takie wiersze obejmują niemal każdy raport, jaki widziałem.
Właściciel decyduje o właściwej poprawce, a zła poprawka to zwykle to, co zmienia jedno wezwanie w trzy:
| Window | Who owns it | Correct fix | What not to do |
|---|---|---|---|
| “wants to use your confidential information stored in…” | The item's access control list in your login keychain | Approve the specific client helper, once, after checking the name | Resetting the login keychain, or granting Always Allow to every application |
| “Sign in to <organization>” or an MFA push | The gateway's identity provider | Use the client's supported session renewal, or re-authenticate | Scripting a fixed password or code into the client |
| “Connection failed”, “Update required”, a policy banner | The client or your organization | Read the first error and fix its cause | Hiding notices by editing a preference file the client rewrites |
Wezwanie, które wraca w tej samej próbie, to inny sygnał niż to, które wraca przy następnej próbie. Pierwsze zwykle oznacza, że połączenie zostało ponownie uruchomione pod tobą; drugie zwykle oznacza, że ponownie pytano o zapisane dane logowania. Zanotuj, które masz, zanim dotkniesz pęku kluczy, bo te dwa prawie nie mają ze sobą nic wspólnego.
Dowiedz się, ile rzeczy uruchamia tunel
Cztery mechanizmy mogą uruchomić ten sam VPN na Macu: akcja na pasku menu, element logowania, reguła On Demand oraz skrypt lub agent. Gdy dwa z nich zadziałają, drugi start może nadejść, gdy pierwszy wciąż czeka na uwierzytelnienie, co daje zduplikowane okno i żadnego postępu. Najpierw wypisz, co jest skonfigurowane: scutil --nc list wypisuje usługi VPN znane Ustawieniom Systemowym wraz z ich bieżącym statusem. Klienci dostarczający własne rozszerzenie sieciowe trzymają profile w aplikacji i mogą tam się nie pojawiać, więc sprawdź także własną listę połączeń klienta.
Następnie poszukaj konkurencyjnych starterów. scutil --nc show "Work VPN" wypisuje słownik konfiguracji wbudowanej usługi, w tym reguły On Demand; reguła, która łączy się ponownie przy każdej zmianie interfejsu, zrestartuje tunel — i ponownie otworzy wezwanie do uwierzytelnienia — za każdym razem, gdy Wi-Fi się przemieści lub ekran obudzi stos sieciowy. Sprawdź elementy logowania w Ustawieniach Systemowych > Ogólne > Elementy logowania i wypisz agentów dla użytkownika za pomocą ls ~/Library/LaunchAgents. Nie ruszaj niczego, co należy do stosu bezpieczeństwa zarządzanego przez MDM; jego usunięcie zwykle zostaje cofnięte przy następnym sprawdzeniu.
Aby zobaczyć, co naprawdę działa podczas próby: ps -Ao pid,comm | grep -iE 'vpn|tunnel|extension'. Dwaj pomocnicy klienta tam, gdzie oczekujesz jednego, wyjaśniają „dlaczego dostałem dwa wezwania” znacznie częściej niż jakikolwiek problem z danymi logowania.
Napraw dostęp do pęku kluczy bez resetowania pęku kluczy
Wezwanie pochodzi z listy kontroli dostępu zapisanego elementu, a nie z protokołu VPN. Każdy element zapisuje, które aplikacje mogą go czytać bez pytania. Po aktualizacji klienta pomocnik, który pyta, może mieć inną nazwę lub podpis, podczas gdy element nadal wymienia stary, więc macOS pyta ponownie przy każdym połączeniu. Zatwierdzenie nowego pomocnika tylko dla tego jednego elementu to cała poprawka; zatwierdzanie każdej aplikacji nią nie jest.
Możesz potwierdzić, że przyczyną jest ACL, nie dotykając VPN: security find-generic-password -s "service-name" -g odczytuje ten sam element z terminala. Jeśli to polecenie również wywołuje wezwanie, okno należy do pęku kluczy, a tunel jest tylko wyzwalaczem. Wskazówki Apple dotyczące trzech przycisków — Zezwól raz, Zezwalaj zawsze, Odrzuć — są warte jednej lektury, bo właśnie Odrzuć sprawia, że wezwanie wraca natychmiast, a nie przy następnej próbie.
Jeśli zatwierdziłeś niewłaściwego pomocnika, otwórz element w Dostępie do pęku kluczy, przejdź do Kontroli dostępu i usuń ten wpis; to jest wycofanie. Usunięcie pęku kluczy logowania albo uruchomienie narzędzia naprawczego, które go odbudowuje, również wyrzuca niepowiązane hasła i jest znacznie większą zmianą niż problem.
Trzymaj kroki logowania i polityki w przepływach, do których należą
Logowanie w przeglądarce lub wyzwanie MFA należą do bramy. Jeśli Twoja organizacja oferuje trwałość sesji lub uwierzytelnianie oparte na certyfikatach, użyj jej, bo to jest wspierany sposób uwierzytelniania się rzadziej. Wpisywanie stałego kodu w kliencie lub przechowywanie hasła w skrypcie, aby wezwanie nigdy się nie pojawiło, zastępuje czynnik interaktywny statycznym sekretem i zawodzi przy następnej rotacji polityki.
Powiadomienia organizacji to jedyna kategoria, której nie należy wyciszać. Zwykle egzekwują kontrolę postawy lub potwierdzenie dopuszczalnego użytkowania, a ich ukrycie może wyłączyć urządzenie z zgodności nawet wtedy, gdy tunel działa. Okna błędów to druga kategoria: zachowaj tekst pierwszego błędu, bo drugie okno często jest tylko tym samym niepowodzeniem zgłoszonym po ponownej próbie.
Sprawdź jedną próbą, a potem po restarcie
Po usunięciu zduplikowanych starterów i naprawie wpisu w pęku kluczy wykonaj jedną próbę: zakończ każdą instancję klienta, łącznie z pomocnikiem na pasku menu, połącz się raz i policz okna. Chcesz zatwierdzenia pęku kluczy, jeśli element został odbudowany, i jednego kroku uwierzytelniania. Niczego więcej. scutil --nc status "Work VPN" powinien zgłosić Connected dla wbudowanej usługi.
Następnie zrestartuj raz i powtórz. Wezwanie, które wraca tylko po restarcie, wskazuje na element logowania lub regułę On Demand, a nie na dane logowania; to, które wraca w sesji, wskazuje na ACL lub na drugi starter. Jeśli nadal się powtarza po obu przejściach, użyteczną rzeczą do przekazania administratorowi jest tabela z trzema wierszami z pierwszej próby — właściciel, dokładny tekst, faza — a nie zrzut ekranu okna.
Celem jest mniej wezwań, a nie ciche. Połączenie, które ukrywa swoje kroki autoryzacji, jest połączeniem, którego nie możesz już audytować, a następna rotacja certyfikatów zastanie Cię bez pojęcia, który komponent zawodzi.