如何在終端機的一行中使用使用者名稱和密碼來執行 openconnect?

如何在終端機的一行中使用使用者名稱和密碼來執行 openconnect?

openconnect在Ubuntu 16.04終端使用,當我想運行它時,我需要進入三個階段:

  • “是/否”
  • "使用者名稱"
  • “密碼”

如何使用openconnectin繞過上述階段一條線(例如使用openconnect選項)?
是否有任何選項,例如以下行?

sudo openconnect <server-name> --user=<'username'> --pass=<'password'>

我使用openconnect --help並找到了一種填寫使用者名稱的方法,但我不知道如何填寫密碼和 SSL 驗證。

答案1

如果您man openconnect在終端中輸入,您將得到一個描述用法的手冊頁

相關部分:

-u,--user=NAME
將登入使用者名稱設定為 NAME

--passwd-on-stdin
從標準輸入讀取密碼

此外,您可能需要停用憑證警告:

--no-cert-check
不要求伺服器 SSL 憑證有效。檢查仍然會發生,失敗會導致警告訊息,但連線無論如何都會繼續。您不需要使用此選項 - 如果您的伺服器具有未經受信任的憑證授權單位簽署的 SSL 證書,您仍然可以將它們(或您的私人 CA)新增至本機檔案並透過 --cafile 選項使用該檔案。

或者您可以將證書新增到文件中。

所有這些都可以結合起來:

echo "password" | sudo openconnect server --user=username --passwd-on-stdin --no-cert-check

答案2

我能夠使用以下命令自動執行 sudo 密碼、VPN 用戶、VPN 密碼和二次質詢(在 Mac 上測試):

challange=<code> && sudo -S <<< "<sudo_password>" echo I am super user && { printf '<vpn_password>\n'; sleep 1; printf "$challange\n"; } | sudo openconnect <server_name> --user <vpn_username> --passwd-on-stdin

答案3

這對我有用:

echo mypassword | openconnect --protocol=anyconnect --user=myusername --passwd-on-stdin 

答案4

當我閱讀解決方案時,最後這是對我有用的腳本:

echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert SERVERCERT

當您在沒有 SERVERCERT(因為你沒有它),它給了錯誤對您而言,其中包含 SERVERCERT,類似於: Server SSL certificate didn't match: pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA= 就是這樣,以 pin-sha256 開頭的字串:...(整個字串,包括 pin-sha256 本身)是您的 SERVERCERT

所以?例如本例的最終結果是:

echo "PASSWORD" | sudo openconnect --protocol=anyconnect SERVER --user=USERNAME --passwd-on-stdin --servercert pin-sha256:76v/J0dQR44xdeBCxKUq/Slvtikc+0xTyRdjaZk/5fA=

相關內容