Ich habe eine Cisco IPSEC VPN-Verbindung in meinen Netzwerkeinstellungen auf einem Yosemite-Computer. Es funktioniert gut, abgesehen davon, dass bei jeder einzelnen Verbindung ein Passwort angefordert wird. Das gespeicherte Passwort wird vollständig ignoriert.
Wenn ich das Passwort unter den Netzwerkeinstellungen eingebe und auf Verbinden klicke, verschwindet das gespeicherte Passwort und es erscheint der Dialog, der nach einem Passwort fragt. Ich habe überprüft, ob das Passwort korrekt ist (es wurde aus einem Dokument kopiert und eingefügt).
Eine vorgeschlagene Lösung für Snow Leopard bestand darin, das Kennwort zu speichern, den Schlüsselbund zu öffnen, den „Xauth“-Schlüssel im Systemschlüsselbund zu suchen und /usr/libexec/configd
Zugriff auf den Schlüssel zu gewähren. Dies hatte keine Auswirkung.
Übliche Berechtigungsreparatur/Datenträgerüberprüfung
Wenn ich den Schlüsselbundzugriff beobachte, während ich auf die Schaltfläche „Verbinden“ drücke, verschwindet das gespeicherte Passwort direkt aus dem Schlüsselbund, sobald der Dialog erscheint.
Wie kann ich das Passwort korrekt speichern, damit ich es nicht bei jeder Verbindung erneut eingeben muss?
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
Und fügen Sie die Anmeldedaten in die Datei .credentials mit den folgenden drei Zeilen ein:
0
your-username
your-password
Vergessen Sie nicht, den Dateien angemessene Berechtigungen zuzuweisen.
Wenn ich Ihre Frage lese, habe ich den Eindruck, dass Sie alles richtig machen und der Cisco VPN-Server die Option hat, das Speichern von Kennwörtern auf der Clientseite zuzulassen disallow
.
Ich weiß mit Sicherheit, dass es eine solche Einstellung gibt.
disallow
Ähnlich wie das Kompilieren von okular ohne DRM-Unterstützung, um einen Satz aus einem Peer-Review-Journal zu kopieren, scheint dies eine grundsätzlich benutzerunfreundliche Einstellung zu sein.Beide Antworten hier, während ich dies schreibe, haben Recht, aber die Existenz der vpn
Befehlszeile bedeutet, dass wir dieses benutzerfeindliche Design mit umgehen können expect
. Vielen Dank an die vorherigen Antwortenden, GhostLyrics für die Offenlegung der Existenz der serverseitigen Option, die das Speichern von Passwörtern deaktiviert, und Hans für die Offenlegung des vpn
Befehlszeilen-Clients.
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 set
Felder wie gewohnt aus. Wenn Ihr VPN wie meines ist, erhalten Sie eine Liste mit „Gruppen“, wenn Sie die vpn connect
. Führen Sie dies einmal von Hand aus und notieren Sie, welche Nummer der Gruppe entspricht, mit der Sie sich verbinden möchten. Es ändert sich nicht zwischen den Läufen, es sei denn, die Administratoren fügen Gruppen hinzu oder entfernen sie. Den Namen können Sie hier nicht verwenden, das Programm erwartet eine Nummer.
Sobald alles ausgefüllt ist, chmod +x
dieses Skript und führen Sie es aus. Ich kann mich jetzt freihändig mit meinem VPN verbinden!
expect eof
tunspawn /usr/bin/open "/Applications/Cisco/Cisco\ AnyConnect\ Secure\ Mobility\ Client.app"
Neben Hans ' Antwort – danke! – wollte ich den Aufruf ein wenig rationalisieren, Terminal umgehen und am Ende mit dem AnyConnect-Symbol im macOS-Statusmenü enden . (Ich bin auf Mojave 10.14.6.)
Starten Sie zuerst Terminal und wechseln Sie dann in das Binärverzeichnis der AnyConnect-Anwendung:
$ 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"
Überschreiben Sie schließlich die ursprüngliche Datei mit einem Shell-Skript und ändern VPN host
Sie es in Ihren VPN-Hostnamen oder Ihre VPN-Adresse und user
und pa$$w0rd
in Ihre Anmeldeinformationen:
$ sudo cat > "Cisco AnyConnect Secure Mobility Client" <<'SCRIPT'
#!/bin/sh
# The AnyConnect vpn utility takes some options and commands or else runs
# interactively.
# Its help command shows that -s reads a script from STDIN and that connect
# takes a host as argument.
# Further, the connect command takes 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 her und übergibt dann die Ausführung an die App-Binärdatei, sodass AnyConnect im Statusmenü des Desktops angezeigt wird.
sudo -i
wenn Schreibberechtigung verweigert
wirdDie Sicherheit kann erhöht werden, indem die Schlüsselbundverwaltung zum Speichern des Kennworts verwendet wird.
security add-generic-password -s 'vpnpassword' -a 'user' -w 'password' -T /usr/bin/security
Hier ist die angepasste Version von Christians Idee. Das Entfernen der internen Heredoc-Anführungszeichen ist erforderlich, damit die Parametererweiterung funktioniert.
sudo cat > "Cisco AnyConnect Secure Mobility Client" <<'SCRIPT'
#!/bin/sh
/opt/cisco/anyconnect/bin/vpn -s \
connect "VPN host" <<CREDENTIALS
user
$(security find-generic-password -ws vpnpassword)
CREDENTIALS
exec "$0.orig" # invoke the original app
SCRIPT
n1000
Matteo Guarnerio
Mikey TK