nmcli fragt immer wieder nach dem VPN-Passwort: Speichern Sie das Geheimnis lokal
Eine Desktop-Sitzung beantwortet die Abfrage mit einem Secret-Agent. Über SSH tut das niemand, also legen Sie die Anmeldeinformation in der Schlüsseldatei ab und laden Sie das Profil neu.
Dasselbe Profil, zwei Sitzungen: Es verbindet vom Desktop aus und hängt über SSH an einer Abfrage, die nichts beantworten kann. Nichts ist kaputt und keine Einstellung ist verloren. NetworkManager fragt einen Secret-Agent nach der Anmeldeinformation, und ein Secret-Agent ist eine Desktop-Komponente, die es in der von Ihnen verwendeten Sitzung nicht gibt.
Führen Sie die folgende Sequenz aus, und der Tunnel kommt ohne Oberfläche hoch – mit dem Vorbehalt, dass das Speichern eines Geheimnisses ändert, wer dieses Profil nutzen kann.
Bestätigen Sie die Diagnose, bevor Sie etwas ändern
Der Unterschied zwischen interaktiver und nicht interaktiver Aktivierung ist die ganze Diagnose. Wenn nmcli --ask connection up gelingt, während eine normale Aktivierung hängt, ist das Profil korrekt und die Quelle des Geheimnisses fehlt. Dieser eine Vergleich erspart Ihnen das Umschreiben einer funktionierenden Konfiguration.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show "Office IPsec" | grep -i flags
Lesen Sie die Flags, statt sie zu raten. Werte, die "frag einen Agent" bedeuten, sind das, wonach Sie suchen, und die genauen Schlüsselnamen unterscheiden sich zwischen VPN-Plugins, weil sie im eigenen Datenwörterbuch des Plugins liegen. Ein FortiSSL-Profil und ein IPsec-Profil verwenden nicht zwangsläufig dieselben Namen, also arbeiten Sie mit der Ausgabe Ihres eigenen Profils.
Prüfen Sie außerdem, ob das Plugin-Paket für dieses Protokoll installiert ist. Ein fehlendes Plugin zeigt sich als unbekannter Verbindungstyp oder als Aktivierungsfehler, der nichts über Passwörter sagt, und die Jagd nach dem Geheimnis in diesem Zustand verschwendet dieselbe Stunde zweimal. Eine Paketabfrage ist billiger als ein ganzer Nachmittag Schlüsseldatei-Bearbeitung.
Verschieben Sie das Geheimnis in die Schlüsseldatei
Die Verbindungsdatei liegt unter /etc/NetworkManager/system-connections/. Geheimnisse werden dort standardmäßig nicht aufbewahrt, und das ist der Sinn der Flags, die Sie gerade gelesen haben. Ein Flag auf null zu setzen sagt NetworkManager, dass der Wert mit dem Profil gespeichert statt bei der Aktivierung abgefragt wird.
[vpn]
password-flags=0
[vpn-secrets]
password=YOUR-VPN-PASSWORD
Bei einem Profil mit zwei Geheimnissen wiederholt sich das Muster: ein Flag pro Geheimnis im Abschnitt [vpn] und die Werte in [vpn-secrets]. Ein IPsec-Profil trägt typischerweise einen vorab geteilten Schlüssel neben der Benutzer-Anmeldeinformation, und das Plugin benennt sie anders als ein einfaches Passwortfeld, also kopieren Sie die Schlüsselnamen aus der Ausgabe von vpn.data statt aus einem Blogbeitrag, der ein anderes Plugin verwendete. Ein falscher Schlüsselname erzeugt ein Profil, das lädt und dann bei der Authentifizierung scheitert, was genau wie ein falsches Passwort aussieht. Vergleichen Sie Ihre Datei mit einem funktionierenden Profil desselben Plugins, bevor Sie sich wieder verbinden.
Setzen Sie Werte in Anführungszeichen, die Leerzeichen, Anführungszeichen oder ein Dollarzeichen enthalten. Ein Wert ohne Anführungszeichen mit einem $ darin wird je nach Parsing-Stelle wörtlich gelesen oder expandiert, und der resultierende Authentifizierungsfehler sieht aus wie ein falsches Passwort.
Korrigieren Sie dann Besitz und Modus der Datei. Diese Schlüsseldateien werden von einem privilegierten Dienst gelesen, und eine Datei, die andere Benutzer lesen können, gilt als nicht vertrauenswürdig, was der übliche Grund ist, warum ein bearbeitetes Profil ignoriert zu werden scheint. Besitzer root, Modus 600, keine Ausnahmen.
Neu laden, dann aktivieren
Die Datei wird beim Laden der Verbindung gelesen, daher reicht Bearbeiten nicht aus. Laden Sie die Profile neu und bringen Sie die Verbindung dann ausdrücklich hoch.
sudo nmcli connection reload
sudo nmcli connection up "Office IPsec"
Wenn das Neuladen die Änderung nicht aufnimmt, schafft ein vollständiger Neustart des Dienstes das, und es gibt Berichte genau darüber. Bevorzugen Sie das Neuladen, wenn andere Verbindungen wichtig sind, denn ein Neustart des Dienstes trennt jede verwaltete Verbindung, und auf einem entfernten Host kann das Ihre Sitzung beenden, bevor der gewünschte Tunnel steht.
Verwenden Sie die UUID, wenn Namen mehrdeutig sind. Rechner mit mehreren Kundenprofilen sammeln Fast-Duplikate an, und die Aktivierung des falschen erzeugt einen Fehler, der wie ein Problem mit den Anmeldeinformationen aussieht.
Wenn das gespeicherte Geheimnis nicht das Problem ist
Ein FortiSSL-Profil kann selbst mit einer korrekten gespeicherten Anmeldeinformation scheitern, weil der Client dem Zertifikat des Gateways nie vertraut. Diese Einstellung ist nicht im Hauptdialog; sie liegt hinter den erweiterten Optionen für das VPN, wo der Digest des vertrauenswürdigen Zertifikats eingegeben wird. Wenn das Protokoll das Zertifikat statt des Passworts erwähnt, sind Sie in diesem Zweig, und kein Bearbeiten von [vpn-secrets] hilft.
Zwei weitere Prüfungen gehören hierher. Bestätigen Sie, dass das Profil nicht aus einer Datei importiert wurde, die noch auf einen Pfad zeigt, den das Plugin nicht lesen kann, und bestätigen Sie, dass das Profil das aktive und kein veraltetes Duplikat ist. Beide erzeugen Aktivierungsfehler, die wie Authentifizierungsfehler klingen.
Entscheiden Sie, ob Speichern akzeptabel ist
Ein gespeicherter PSK und ein Passwort sind für alles lesbar, was als root auf dieser Maschine läuft. Auf einer Maschine, die Sie kontrollieren, ist das ein vernünftiger Tausch für einen Dienst ohne Oberfläche. Auf einem gemeinsam genutzten Host verdient es ein Gespräch, denn das Profil enthält jetzt eine Anmeldeinformation, die zuvor durch den Desktop-Schlüsselbund geschützt war. Fragen Sie, wer sonst root auf diesem Host erreichen kann, bevor Sie entscheiden, nicht nachdem die Änderung umgesetzt ist.
Wenn die Richtlinie gespeicherte VPN-Geheimnisse verbietet, schwächen Sie das Profil nicht, damit ein Cron-Job funktioniert. Führen Sie die Verbindung aus einer Sitzung mit Agent aus oder nutzen Sie einen anderen Mechanismus für die Automatisierung.
Zum Schluss halten Sie fest, welche Profile Geheimnisse tragen, damit niemand eines unbemerkt auf ein Laptop kopiert. Ein Kommentar über dem Geheimnisabschnitt mit Datum und Grund genügt, und er erspart jemandem später eine unangenehme Prüfung.