Jak uzyskać połączenie Cisco VPN, aby zapamiętać hasło?

16

Problem

Mam połączenie Cisco IPSEC VPN w moich ustawieniach sieciowych na maszynie Yosemite. Działa dobrze, oprócz monitowania o hasło dla każdego połączenia. Zapisane hasło jest całkowicie ignorowane.

tło

Jeśli wprowadzę hasło w ustawieniach sieci i kliknę przycisk Połącz, zapisane hasło zniknie i pojawi się okno dialogowe z prośbą o podanie hasła. Sprawdziłem, czy hasło jest poprawne (zostało skopiowane z dokumentu).

Rzeczy, które nie działały

  • Sugerowanym rozwiązaniem dla systemu Snow Leopard było zapisanie hasła, otwarcie dostępu do pęku kluczy, zlokalizowanie klucza „Xauth” w pęku kluczy systemu i przyznanie /usr/libexec/configddostępu do klucza. To nie miało wpływu.

  • Zwykła naprawa uprawnień / sprawdzanie dysku

Dziwne rzeczy

Jeśli oglądam dostęp do pęku kluczy podczas naciskania przycisku połączenia, zapisane hasło znika z pęku kluczy zaraz po wyświetleniu okna dialogowego.

Ogólne pytanie

Jak poprawnie zapisać hasło, aby nie trzeba go ponownie przy każdym połączeniu?

Mikey TK
źródło
hmm Mam również dziwne problemy z uwierzytelnianiem w Yosemite, szczególnie w dialogu sieci. Nie zdziwiłbym się, gdyby w grę wchodził błąd.
n1000
Czy na pewno nie zależy to od zdalnych zasad VPN (teraz pozwala na zapisywanie hasła)?
Matteo Guarnerio
To… wyjaśniałoby, dlaczego od razu zniknie z pęku kluczy, jeśli zostanie wyraźnie zapisane. Będziesz musiał porozmawiać z administratorami sieci!
Mikey TK,

Odpowiedzi:

13

Myślę, że używasz anyconnect do łączenia się z serwerem Cisco VPN. AnyConnect może być również używany z terminala. Działa to na macOS Sierra i AnyConnect 3.1.14018. Utwórz skrypt bash za pomocą następującego polecenia:

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

I umieść szczegóły logowania w pliku .credentials z następującymi trzema liniami:

0
your-username
your-password

Nie zapomnij nałożyć rozsądnych uprawnień na pliki.

Hans
źródło
Użytkownik stwierdza „Mam połączenie Cisco IPSEC VPN w moich ustawieniach sieciowych na komputerze Yosemite”. Ten wybór słów doprowadził mnie do dość pewnej konkluzji, że używają
wbudowanego
czy możesz w jakiś sposób przekazać ten plik z zaszyfrowanymi nazwami użytkowników i / lub hasłami? jak w pliku haseł na linuksie
forgotstackxpassword
8

Po przeczytaniu pytania mam wrażenie, że robisz wszystko poprawnie, a serwer Cisco VPN ma opcję pozwalającą na zapisywanie haseł ustawionych po stronie klienta disallow.

Wiem na pewno, że takie ustawienie istnieje.

GhostLyrics
źródło
6
Nadal denerwujące jest to, że klient OS X zezwala na to disallowustawienie. Podobnie jak kompilacja okularu bez obsługi DRM w celu skopiowania zdania z czasopisma recenzowanego, wydaje się, że jest to ustawienie zasadniczo nieprzyjazne dla użytkownika.
Landak
2

Obie odpowiedzi tutaj, kiedy to piszę, mają rację, ale istnienie vpnwiersza poleceń oznacza, że ​​możemy obejść ten nieprzyjazny dla użytkownika projekt expect. Podziękowania dla poprzednich odpowiedzi, GhostLyrics za ujawnienie istnienia opcji po stronie serwera, która wyłącza zapisywanie hasła, oraz Hans za ujawnienie vpnklienta wiersza poleceń.

Utwórz plik, który wygląda następująco:

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

Wypełnij setpola jak zwykle. Jeśli twoja sieć VPN jest podobna do mojej, po uruchomieniu otrzymasz listę „grup” vpn connect. Uruchom to raz ręcznie i zanotuj, który numer odpowiada grupie, z którą chcesz się połączyć. Nie zmieni się między uruchomieniami, chyba że administratorzy dodadzą / usuwają grupy. Nie możesz użyć nazwy tutaj, program oczekuje liczby.

Po wypełnieniu chmod +xtego skryptu uruchom go. Teraz mogę połączyć się z moją siecią VPN bez użycia rąk!

Mikey TK
źródło
0

Odwracając się od odpowiedzi Hansa - dzięki ! - Chciałem nieco usprawnić wywołanie, omijając Terminal i kończąc na ikonie AnyConnect w menu statusu macOS. (Jestem na Mojave 10.14.6.)

Najpierw uruchom Terminal, a następnie przejdź do katalogu binarnego aplikacji AnyConnect:

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

Utwórz kopię oryginalnego pliku binarnego:

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

Na koniec zastąp plik początkowy skryptem powłoki, zmieniając VPN hostnazwę hosta VPN lub adres VPN useroraz pa$$w0rddane uwierzytelniające:

$ 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

Teraz powinieneś być w stanie uruchomić AnyConnect z Spotlight lub Finder tak jak zwykle. Najpierw nasz skrypt połączy się, a następnie zostanie przekazane wykonanie do pliku binarnego aplikacji, aby AnyConnect pojawił się w menu statusu pulpitu.

Christian Campbell
źródło