23 votes

Comment faire pour qu'une connexion VPN Cisco se souvienne de son mot de passe ?

Le problème

J'ai une connexion VPN Cisco IPSEC dans mes paramètres réseau sur une machine Yosemite. Elle fonctionne bien, à part qu'elle demande un mot de passe à chaque connexion. Le mot de passe enregistré est entièrement ignoré.

Contexte

Si je saisis le mot de passe dans les paramètres réseau et que je clique sur 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 a été copié-collé à partir d'un document).

Les choses qui n'ont pas fonctionné

  • Une proposition de solution Pour Snow Leopard, il fallait enregistrer le mot de passe, ouvrir le Trousseau d'accès, localiser la clé "Xauth" dans le trousseau du système et accorder le mot de passe à l'utilisateur. /usr/libexec/configd l'accès à la clé. Cela n'a eu aucun effet.

  • Les trucs habituels de réparation des permissions et de vérification du disque

Des trucs bizarres

Si je regarde l'accès au trousseau tout en appuyant sur le bouton de connexion, le mot de passe enregistré disparaît purement et simplement du trousseau de clés au moment où la boîte de dialogue apparaît.

Question générale

Comment faire pour que le mot de passe soit correctement enregistré et que je n'aie pas à le saisir à nouveau à chaque connexion ?

0 votes

Hmm. J'ai aussi des problèmes d'authentification bizarres sur Yosemite, surtout dans le dialogue Réseau. Je ne serais pas surpris qu'il y ait un bug.

0 votes

Etes-vous sûr que cela ne dépend pas des politiques de VPN à distance (qui permettent maintenant de sauvegarder les mots de passe) ?

0 votes

Cela expliquerait pourquoi il disparaît directement du trousseau si on le sauvegarde explicitement. Je vais devoir discuter avec les administrateurs du réseau !

17voto

Hans Points 161

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 bash script avec la commande suivante :

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

Et mettez les détails de connexion dans le fichier .credentials avec les trois lignes suivantes :

0
your-username
your-password

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

0 votes

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 assez grande certitude qu'ils utilisent la solution VPN intégrée dans les préférences système/réseau/+.

0 votes

Pouvez-vous faire passer ce fichier d'une manière ou d'une autre avec les noms d'utilisateurs et/ou les mots de passe cryptés ? comme avec le fichier des mots de passe sous linux.

10voto

bovium Points 919

En lisant votre question, j'ai l'impression que vous faites tout correctement et que le serveur VPN Cisco a l'option d'autoriser la sauvegarde des mots de passe côté client réglée sur disallow .

Je sais avec certitude qu'un tel cadre existe.

8 votes

C'est toujours ennuyeux que le client OS X permet à ce disallow réglage. Tout comme la compilation d'okular sans support DRM afin de copier une phrase d'un journal révisé par des pairs, il semble qu'il s'agisse d'un cadre fondamentalement peu convivial pour l'utilisateur.

8voto

En roue libre Hans ' réponse -J'ai voulu rationaliser un peu l'invocation, en contournant Terminal et en me retrouvant avec l'icône AnyConnect dans le menu d'état de MacOS. (Je suis sur Mojave 10.14.6.)

D'abord, lancez le Terminal, puis passez dans le 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 shell script, en modifiant VPN host au nom ou à l'adresse de votre VPN et user y pa$$w0rd à vos 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.
# 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

Maintenant, vous devriez être en mesure de lancer AnyConnect à partir de Spotlight ou du Finder comme d'habitude. Tout d'abord, notre script se connectera et transmettra ensuite l'exécution au binaire de l'application afin qu'AnyConnect apparaisse dans le menu d'état du bureau.

1 votes

Génial mec, Cisco Anny Connect UX est comme de la merde.

0 votes

Référence future : utiliser sudo -i lorsque l'autorisation d'écriture est refusée

7voto

Mikey T.K. Points 2555

Les deux réponses ici à l'heure où j'écris ces lignes en ont le droit, mais l'existence de la vpn signifie que nous pouvons contourner cette conception hostile à l'utilisateur avec expect . Merci aux personnes qui ont répondu précédemment, à GhostLyrics pour avoir révélé l'existence de l'option côté serveur qui désactive la sauvegarde du mot de passe, et à Hans pour avoir révélé le vpn client en 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 le set comme d'habitude. Si votre VPN est comme le mien, vous recevez une liste de "groupes" lorsque vous exécutez la commande vpn connect . Exécutez cette opération une fois à la main, et notez le numéro qui correspond au groupe auquel vous voulez vous connecter. Il ne changera pas d'une exécution à l'autre, sauf si les administrateurs ajoutent ou suppriment des groupes. Vous ne pouvez pas utiliser le nom ici, le programme attend un numéro.

Une fois que tout est rempli, chmod +x ce script et l'exécuter. Je suis maintenant capable de me connecter à mon VPN, les mains libres !

1 votes

À la fin, voici un bonus, ouvrez le stupide client lui-même et regardez vous déjà connecté ! Après expect eof faire spawn /usr/bin/open "/Applications/Cisco/Cisco\ AnyConnect\ Secure\ Mobility\ Client.app"

3voto

isThisThing0n Points 1

La sécurité peut être renforcée en utilisant Keychain Access pour stocker le mot de passe.

security add-generic-password -s 'vpnpassword'  -a 'user' -w 'password' -T /usr/bin/security

Voici la version ajustée de Christian's idée. La suppression des guillemets internes de l'heredoc est nécessaire pour que l'expansion des paramètres fonctionne.

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X