Cisco AnyConnect v3.1 AutoLogin

10

Mam trochę trudności z Cisco AnyConnect v3.1 w zakresie automatycznego logowania. Muszę pozostawać w kontakcie z jednym serwerem przez cały dzień i byłoby super, gdybym nie musiał wykopywać mojego 16-znakowego hasła każdego dnia. Chciałbym, aby klient logował się automatycznie, ale nie jestem nawet pewien, czy jest to możliwe.

Powinienem zauważyć, że oprogramowanie AnyConnect jest dostarczane przez naszą firmę hostingową, a ja ani nikt w mojej organizacji nie mam dostępu do strony zarządzania. Widziałem, że na interwebach jest takie oprogramowanie o nazwie „AnyConnect Profile Editor”, ale Cisco nie pozwala mi pobierać bez prawidłowego logowania.

Chciałem %appdata%\local\cisco\cisco anyconnect secure mobility client\preferences.xmlprzejrzeć moje preferencje, a także %programdata%\Cisco\Cisco AnyConnect Secure Mobility Client\Profile\ANYCONNECT.XMLustawienia profilu. Żadne z nich nie pokazało nigdzie, że będę w stanie przechowywać moje dane uwierzytelniające. Kilka razy nawet złamałem swój profil, próbując w niektórych miejscach wygadać hasło. To nie działało, idź.

Wreszcie znalazłem ten post na forum, który zdawał się określać „odciski palców” certyfikatów klienta i serwera, a także coś, co nazywa się tokenem SDI.

Oświadczenie: Jestem programistą front-end w ciągu dnia i minęło sporo czasu, odkąd musiałem samodzielnie zarządzać siecią, przepraszam za pytanie noob!

MikeZ
źródło
1
Zazwyczaj jest to polityka ustalana i kontrolowana przez osoby zarządzające dostępem Anyconnect. Jak już powiedziałeś, nie masz dostępu do tej części konfiguracji, wątpię, byśmy mogli zrobić wiele, aby ci pomóc. Jest to prawdopodobnie nie na temat pytania „użytkownika końcowego”.
Brett Lykins
Rozsądne pytanie z dokładnymi szczegółami ... migrujmy do superużytkownika
Mike'a Penningtona

Odpowiedzi:

16

Oto mój skrypt, aby uruchomić Cisco AnyConnect Mobility Client v3.1 i zalogować się automatycznie. Zapisz ten skrypt jako FILENAME.vbs , zastąp HASŁO swoim hasłem, w razie potrzeby zmień ścieżkę do exe klienta VPN (prawdopodobnie nie), a także może być konieczne dostosowanie drugiego czasu uśpienia w zależności od szybkości połączenia (moje działa niezawodnie przy 5000, ale twój może potrzebować mniej / więcej czasu na wybranie numeru do domu). Mój przypiąłem do paska zadań, ale możesz go też użyć skrótu.

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """%PROGRAMFILES(x86)%\Cisco\Cisco AnyConnect Secure Mobility Client\vpnui.exe"""

WScript.Sleep 3000

WshShell.AppActivate "Cisco AnyConnect Secure Mobility Client"

WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{TAB}"
WshShell.SendKeys "{ENTER}"

WScript.Sleep 5000

WshShell.SendKeys "PASSWORD"
WshShell.SendKeys "{ENTER}"
RADA
źródło
1
Całkiem niezłe rozwiązanie! Umieściłem kilka dodatkowych TAB , ENTER i snu dla mojego konkretnego przypadku i działało idealnie. W przypadku mojej maszyny i połączenia internetowego (300 Mb / s w górę i w górę) skróciłem wszystkie czasy uśpienia do zaledwie pół sekundy (500 milisekund), a teraz otrzymuję połączenie VPN bardzo szybko! Dziękuję Ci!
informatik01
1
Uwaga: jeśli twoje hasło zawiera znaki%! (^ ~ +, Musisz umieścić {i} wokół nich.
jeroenk
4

Używam czegoś według następujących zasad:

set FILE=%TEMP%\tmp
echo connect your.host.name> %FILE%
(echo 0)>> %FILE%
echo yourUserName>> %FILE%
echo yourPassWord>> %FILE%
"C:\Program Files\Cisco\Cisco AnyConnect Secure Mobility Client\vpncli.exe" -s < %FILE%

( Aktualizacja: Dlaczego nawiasy znajdują się w pobliżu echo 0? Powinno to przypominać, gdy dokonuje się innego wyboru niż 0, że 1>lub 2>ma specjalne znaczenie, przekierowanie stdoutlub stderrodpowiednio - ale nie echo 1lub 2. Więc pozostajemy po bezpiecznej stronie z ( echo 0).)

To jest trochę bardziej zwięzłe:

(echo connect your.host.name& echo 0& echo yourUserName& echo yourPassWord& echo.) > %FILE%
more %FILE% | "C:\Program Files\Cisco\Cisco AnyConnect Secure Mobility Client\vpncli.exe" -s

Jeśli jednak chcesz osiągnąć to samo bez tymczasowego pliku, nie działa to dla mnie - byłbym zainteresowany, dlaczego:

(echo connect your.host.name& echo 0& echo yourUserName& echo yourPassWord) | "%ProgramFiles(x86)%\Cisco\Cisco AnyConnect Secure Mobility Client\vpncli.exe" -s

Aktualizacja: działa, można znaleźć na https://stackoverflow.com/a/29747723/880783 :

(echo connect your.host.name^& echo 0^& echo yourUserName^&echo yourPassWord^&rem.) | "%ProgramFiles(x86)%\Cisco\Cisco AnyConnect Secure Mobility Client\vpncli.exe" -s

Wszystkie te warianty zależą oczywiście od konfiguracji serwera (szczególnie grupa VPN, którą musisz wybrać). Aby dowiedzieć się, co musisz wprowadzić, zadzwoń vpncli.exeraz bez parametrów, zacznij od connect your.host.name, a następnie zwróć uwagę na monit.

Aktualizacja: ma to tę dodatkową zaletę, że oferuje całkowitą swobodę w odniesieniu do serwera, nazwy użytkownika i hasła, i nie opiera się na żadnych wartościach uśpienia (co zawsze jest trudne, jeśli system jest zajęty czymś innym).

Bers
źródło
2
Przełącznik -s nie jest dostępny w wersji 3.1 klienta. Czy masz wersję 4.1? Czy ta wersja jest gdzieś publicznie dostępna? Nie mam ważnej licencji, aby pobrać ją ze strony internetowej Cisco.
SzilardD
Tak, użyłem wersji 4+. Jednak nie znam żadnego legalnego źródła publicznego (prawdopodobnie z powodu ograniczeń eksportowych).
dniu
3

Odpowiadam na moje pytanie tą odpowiedzią „meh” - nie o to mi chodziło i chętnie przyjmuję inną odpowiedź, która może lepiej odpowiedzieć na moje pierwotne pytanie.

Ponieważ nie miałem szczęścia z automatycznymi logowaniami, następną najlepszą rzeczą, jaką mogłem wymyślić, było automatyczne skopiowanie mojego śmiesznie długiego hasła do mojego schowka. W systemie Windows utworzyłem .batplik z tym w treści:

echo|set /p=MyPassword|clip

Gdzie „MyPassword” to twoje aktualne hasło.

Po dwukrotnym kliknięciu plik ten skopiuje twoje hasło do schowka w celu szybkiego logowania. Lepsze niż nic!

MikeZ
źródło
Jeśli chcesz wykonać trochę lekkiej pracy z automatyzacją, użyj autoit, aby uruchomić aplikację VPN, a następnie skopiuj hasło do pola hasła
Mike Pennington,
2
Jaka jest zaleta w echo|set /p=MyPassword|clipporównaniu do sprawiedliwego echo MyPassword|clip?
bers
3
@bers Jeśli tylko użyjesz echo your_pass| clip, umieści / dopisuje nowy znak linii na końcu twojego_passu . Po prostu wypróbuj go, a kiedy wkleisz go w jakimś edytorze, zauważysz, że kursor znajduje się w następnym wierszu (jeśli masz edytor, który może wyświetlać nowe znaki wiersza, takie jak Notepad ++ lub SciTE , użyj go, a zobaczysz CRLF na Windows na końcu your_pass ). Ale obecne rozwiązanie MikeZ działa doskonale (jako sposób na skopiowanie hasła do schowka).
informatik01
1
@ informatik01 Dziękujemy za wyjaśnienie!
dniu
1
(1) Doskonałe wyjaśnienie @ informatik01 nie w pełni zaspokaja potrzebę echo|na początku wiersza poleceń. Powodem jest to, że set /pjest to polecenie odczytu wartości (linii) ze standardowego wejścia. Bez echo|tego set /p=MyPassword|clippolecenie cicho siedziałoby i czytało wiersz z terminala. (2) Nienawidzę widzieć |spacji przed i po. Ale uważaj, że echo | set /p=MyPassword | clipzapisze MyPassword (ze spacją) do schowka. Można temu zapobiec poprzez dodanie cytatów: echo | set /p="MyPassword" | clip.
Scott,