Comment obtenir une connexion VPN Cisco pour mémoriser son mot de passe?

16

Le problème

J'ai une connexion VPN Cisco IPSEC dans mes paramètres réseau sur une machine Yosemite. Cela fonctionne bien, en plus de demander un mot de passe à chaque connexion. Le mot de passe enregistré est entièrement ignoré.

Contexte

Si j'entre le mot de passe sous les paramètres réseau et que je clique sur se connecter, le mot de passe enregistré disparaît et la boîte de dialogue demandant un mot de passe apparaît. J'ai vérifié que le mot de passe est correct (il est copié-collé à partir d'un document).

Choses qui n'ont pas fonctionné

  • Une solution à cela pour Snow Leopard était d'enregistrer le mot de passe, d'ouvrir l'accès au trousseau, de localiser la clé "Xauth" dans le trousseau du système et d'accorder l' /usr/libexec/configdaccès à la clé. Cela n'a eu aucun effet.

  • Réparation des autorisations habituelles / vérification du disque

Trucs bizarres

Si je regarde l'accès au trousseau en appuyant sur le bouton de connexion, le mot de passe enregistré disparaît carrément du trousseau dès que la boîte de dialogue apparaît.

Question générale

Comment puis-je obtenir le mot de passe correctement enregistré pour ne pas avoir à le ressaisir à chaque connexion?

Mikey TK
la source
hmm. J'ai également des problèmes d'authentification étranges sur Yosemite, en particulier dans la boîte de dialogue Réseau. Je ne serais pas surpris s'il y avait un bug impliqué.
n1000
Êtes-vous sûr que cela ne dépend pas des politiques VPN à distance (permettant désormais l'enregistrement du mot de passe)?
Matteo Guarnerio
Cela .. expliquerait pourquoi il disparaît directement du trousseau s'il est explicitement enregistré. Devra avoir une conversation avec les administrateurs du réseau!
Mikey TK

Réponses:

13

Je suppose que vous utilisez anyconnect pour vous connecter au serveur VPN Cisco. AnyConnect peut également être utilisé à partir du terminal. Cela fonctionne sur macOS Sierra et AnyConnect 3.1.14018. Créez un script bash avec la commande suivante:

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

Et mettez les informations de connexion dans le fichier .credentials avec les trois lignes suivantes:

0
your-username
your-password

N'oubliez pas de mettre des autorisations raisonnables sur les fichiers.

Hans
la source
L'utilisateur déclare "J'ai une connexion VPN Cisco IPSEC dans mes paramètres réseau sur une machine Yosemite". Ce choix de mots m'a amené à conclure avec une certitude assez élevée qu'ils utilisent la solution VPN intégrée dans les Préférences Système / Réseau / +
GhostLyrics
pouvez-vous transmettre ce fichier d'une manière ou d'une autre avec les noms d'utilisateur et / ou les mots de passe cryptés? comme avec le fichier de mots de passe sous linux
Forgotstackxpassword
8

En lisant votre question, j'ai l'impression que vous faites tout correctement et que Cisco VPN Server a la possibilité d'autoriser l'enregistrement des mots de passe côté client sur disallow.

Je sais avec certitude qu'un tel paramètre existe.

GhostLyrics
la source
6
Il est toujours ennuyeux que le client OS X autorise ce disallowparamètre. Tout comme la compilation d'okular sans prise en charge de DRM afin de copier une phrase d'un journal à comité de lecture, il semble que ce soit un paramètre fondamentalement hostile à l'utilisateur.
Landak
2

Les deux réponses ici au moment où j'écris ceci ont le droit, mais l'existence de la vpnligne de commande signifie que nous pouvons contourner cette conception hostile aux utilisateurs expect. Merci aux répondeurs précédents, GhostLyrics pour avoir révélé l'existence de l'option côté serveur qui désactive l'enregistrement du mot de passe et Hans pour avoir révélé le vpnclient de ligne de commande.

Créez un fichier qui ressemble à ceci:

#!/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

Remplissez les setchamps normalement. Si votre VPN est comme le mien, vous recevez une liste de "groupes" lorsque vous exécutez le vpn connect. Exécutez-le une fois à la main et notez le numéro correspondant au groupe auquel vous souhaitez vous connecter. Il ne changera pas entre les exécutions sauf si les administrateurs ajoutent / suppriment des groupes. Vous ne pouvez pas utiliser le nom ici, le programme attend un nombre.

Une fois que tout est rempli, chmod +xexécutez ce script. Je peux maintenant me connecter à mon VPN, mains libres!

Mikey TK
la source
0

Roue libre de Hans de réponse -Merci - Je voulais rationaliser l'appel un peu, sans passer par terminal et se terminant avec l'icône AnyConnect dans le menu d'état MacOs. (Je suis sur Mojave 10.14.6.)

Tout d'abord, lancez Terminal, puis accédez au répertoire du binaire de l'application AnyConnect:

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

Faites une copie du binaire original:

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

Enfin, écrasez le fichier initial avec un script shell, en changeant VPN hostvotre nom d'hôte VPN ou votre adresse et useret pa$$w0rdvos informations d'identification:

$ 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

Maintenant, vous devriez pouvoir exécuter AnyConnect à partir de Spotlight ou du Finder comme d'habitude. Tout d'abord, notre script se connecte, puis transfère l'exécution au binaire de l'application afin qu'AnyConnect apparaisse dans le menu d'état du bureau.

Christian Campbell
la source