Networking

OpenConnect:執行身份驗證請求時傳遞使用者密碼?

  • December 24, 2020

目前我正在使用以下命令執行身份驗證請求以獲取伺服器證書(FINGERPRINT)和OpenConnect-Cookie:

openconnect --authenticate --user=<username> "VPN host"

因此,我總是必須在稍後出現的使用者提示中輸入我的密碼。

是否有一個選項可用於將密碼傳遞到OpenConnect上層命令中?

例如,通過擴展命令…

openconnect --authenticate --user=<username> password=<password> "VPN host"

… ?


挑戰在於:

使用者RuiFRibeiro的想法只是在命令中回顯密碼。不幸的是,這在我們的例子中不起作用,因為伺服器在到達第二個提示(=密碼提示)之前又提供了一個使用者提示。

它會這樣發生:

  1. 第一個使用者提示:伺服器說
  • 請選擇是要隧道傳輸所有流量還是僅傳輸特定流量
  • 輸入Tunnel allTunnel company”。
  1. 第二個使用者提示:伺服器在說
  • 請輸入您的密碼。

正如你所看到的,一個簡單echo的問題會給出錯誤的答案。:-)


對於可能的expect-script 插入文本之前的真實(確切)伺服器請求如下:

  1. 第一個提示:GROUP: [tunnel MyCompany|tunnel all]:,答案插入應該是tunnel MyCompany
  2. 第二個提示:Password:,答案插入應該是123456789

通常,VPN 軟體不允許為使用者輸入密碼,因為這被認為存在安全風險。

一種可能的解決方案是通過管道輸入密碼,如下所示:

echo -e "Tunnel all\nYourPassword" | openconnect --authenticate --user=<username> "VPN host"

如果我們談論的是您對這種編寫腳本的方法感興趣:

  • 請務必了解將密碼保存在文件中的安全隱患,並將該文件的讀取權限僅限於執行該openconnect命令的使用者。

PS 用您的真實密碼替換 YourPassword

引用自:https://unix.stackexchange.com/questions/464920