Wie kann eine Cisco VPN-Verbindung an das Kennwort erinnert werden?

16

Das Problem

Ich habe eine Cisco IPSEC VPN-Verbindung in meinen Netzwerkeinstellungen auf einem Yosemite-Computer. Es funktioniert einwandfrei, abgesehen von der Aufforderung zur Eingabe eines Kennworts für jede einzelne Verbindung. Das gespeicherte Passwort wird vollständig ignoriert.

Hintergrund

Wenn ich das Passwort in den Netzwerkeinstellungen eingebe und auf Verbinden klicke, verschwindet das gespeicherte Passwort und der Dialog zur Passwortabfrage erscheint. Ich habe überprüft, ob das Kennwort korrekt ist (es wurde aus einem Dokument kopiert).

Dinge, die nicht funktionierten

  • Als Lösung für Snow Leopard wurde vorgeschlagen, das Kennwort zu speichern, den Schlüsselbund zu öffnen, den Schlüssel "Xauth" im Systemschlüsselbund zu suchen und /usr/libexec/configdden Schlüssel zuzugreifen. Dies hatte keine Wirkung.

  • Reparieren / Überprüfen von Datenträgern mit üblichen Berechtigungen

Komisches Zeug

Wenn ich den Schlüsselbundzugriff beobachte, während ich auf die Schaltfläche "Verbinden" klicke, verschwindet das gespeicherte Kennwort sofort aus dem Schlüsselbund, sobald das Dialogfeld angezeigt wird.

Gesamtfrage

Wie kann ich das Passwort korrekt speichern, damit ich es nicht bei jeder Verbindung erneut eingeben muss?

Mikey TK
quelle
hmm. Ich bekomme auch seltsame Authentifizierungsprobleme bei Yosemite, insbesondere im Netzwerkdialog. Wäre nicht überrascht, wenn es sich um einen Fehler handelt.
n1000
Sind Sie sicher, dass dies nicht von Remote-VPN-Richtlinien abhängt (die jetzt das Speichern von Passwörtern ermöglichen)?
Matteo Guarnerio
Das würde erklären, warum es direkt aus dem Schlüsselbund verschwindet, wenn es explizit gespeichert wird. Muss mich mit den Netzwerkadministratoren unterhalten!
Mikey TK

Antworten:

13

Ich vermute, Sie verwenden anyconnect, um eine Verbindung zum Cisco VPN-Server herzustellen. AnyConnect kann auch vom Terminal aus verwendet werden. Dies funktioniert unter macOS Sierra und AnyConnect 3.1.14018. Erstellen Sie ein Bash-Skript mit dem folgenden Befehl:

/opt/cisco/anyconnect/bin/vpn connect your-vpn.server.here -s <.credentials

Fügen Sie die Anmeldedaten in die Datei .credentials mit den folgenden drei Zeilen ein:

0
your-username
your-password

Vergessen Sie nicht, die Dateien mit angemessenen Berechtigungen zu versehen.

Hans
quelle
Benutzer sagt "Ich habe eine Cisco IPSEC VPN-Verbindung in meinen Netzwerkeinstellungen auf einem Yosemite-Computer". Diese Wortwahl ließ mich mit
größter
Können Sie diese Datei irgendwie mit den Benutzernamen und / oder Passwörtern verschlüsselt durchreichen? wie bei der passwortdatei unter linux
forgotstackxpassword
8

Durch das Lesen Ihrer Frage habe ich den Eindruck, dass Sie alles richtig machen und der Cisco VPN-Server die Option hat, das Speichern von Kennwörtern clientseitig zuzulassen disallow.

Ich weiß mit Sicherheit, dass eine solche Einstellung existiert.

GhostLyrics
quelle
6
Es ist immer noch ärgerlich, dass der OS X-Client diese Einstellung zulässtdisallow . Ähnlich wie das Kompilieren von okular ohne DRM-Unterstützung, um einen Satz aus einem von Experten geprüften Journal zu kopieren, scheint dies eine grundsätzlich unfreundliche Einstellung für den Benutzer zu sein.
Landak
2

Beide Antworten, die ich hier schreibe, haben das Recht darauf, aber die Existenz der vpnBefehlszeile bedeutet, dass wir dieses benutzerfeindliche Design umgehen können expect. Vielen Dank an die vorherigen Antwortenden, GhostLyrics, die die Existenz der serverseitigen Option enthüllt haben, die das Speichern von Passwörtern deaktiviert, und Hans, die den vpnBefehlszeilen-Client enthüllt haben .

Erstellen Sie eine Datei, die so aussieht:

#!/usr/bin/expect --
set timeout 10
set addr ""  # VPN Host
set user ""  # Username
set pass ""  # Password (ensure that special characters are escaped)
set group "" # Group NUMBER shown in connect prompt


spawn /opt/cisco/anyconnect/bin/vpn connect $addr
expect "\r\nGroup:*"
send -- "$group\r"
expect "\r\nUsername:*"
send -- "$user\r"
expect "Password: "
send -- "$pass\r"
expect eof

Füllen Sie die setFelder wie gewohnt aus . Wenn Ihr VPN meinem ähnlich ist, erhalten Sie beim Ausführen von eine Liste mit "Gruppen" vpn connect. Führen Sie dies einmal von Hand aus und notieren Sie, welche Nummer der Gruppe entspricht, mit der Sie eine Verbindung herstellen möchten. Es wird nicht zwischen den Läufen geändert, es sei denn, die Administratoren fügen Gruppen hinzu oder entfernen sie. Sie können den Namen hier nicht verwenden, das Programm erwartet eine Nummer.

Sobald alles ausgefüllt ist, führen Sie chmod +xdieses Skript aus. Ich kann mich jetzt freihändig mit meinem VPN verbinden!

Mikey TK
quelle
0

Freilauf von Hans ' Antwort - danke! - Ich wollte den Aufruf ein wenig rationalisieren, um das Terminal zu umgehen und am Ende das AnyConnect-Symbol im macOS-Statusmenü zu sehen. (Ich bin auf Mojave 10.14.6.)

Starten Sie zuerst Terminal und wechseln Sie dann in das Verzeichnis der AnyConnect-Anwendungsbinärdatei:

$ cd "/Applications/Cisco/Cisco AnyConnect Secure Mobility Client.app/Contents/MacOS"

Erstellen Sie eine Kopie der ursprünglichen Binärdatei:

$ sudo cp \
"Cisco AnyConnect Secure Mobility Client" \
"Cisco AnyConnect Secure Mobility Client.orig"

Schließlich überschreibt die ursprüngliche Datei mit einem Shell - Skript, Ändern VPN hostzu Ihrem VPN Hostnamen oder die Adresse und userund pa$$w0rdauf Ihre Zugangsdaten:

$ sudo cat > "Cisco AnyConnect Secure Mobility Client" <<'SCRIPT'
#!/bin/sh

# The AnyConnect vpn utility takes some options and commands or
# else runs interactively. The help command shows that -s reads
# a script from STDIN and that connect takes a host as argument.
# connect gets the username and password from STDIN. We will 
# supply them from a heredoc with the -s option.

/opt/cisco/anyconnect/bin/vpn -s \
connect "VPN host" <<'CREDENTIALS'
user
pa$$w0rd
CREDENTIALS

exec "$0.orig"  # invoke the original app
SCRIPT

Jetzt sollten Sie AnyConnect wie gewohnt über Spotlight oder Finder ausführen können. Zuerst stellt unser Skript eine Verbindung zur App-Binärdatei her und leitet sie dann weiter, sodass AnyConnect im Desktop-Statusmenü angezeigt wird.

Christian Campbell
quelle