現在、次のコマンドを使用してサーバー証明書(FINGERPRINT)とOpenConnect
-Cookieをインポートするための認証要求を実行しています。
openconnect --authenticate --user=<username> "VPN host"
したがって、後で表示されるユーザープロンプトには常にパスワードを入力する必要があります。
OpenConnect
親コマンドにすでにパスワードを渡すオプションはありますか?
たとえば、コマンドを展開すると...
openconnect --authenticate --user=<username> password=<password> "VPN host"
...?
課題は次のとおりです。
ユーザールイ・フリーベイロコマンドにパスワードをエコーしたいです。残念ながら、サーバーが2番目のプロンプト(=パスワードプロンプト)に到達する前に1つ以上のユーザープロンプトを提供するため、私たちの場合は機能しません。
何が起こるかは次のとおりです。
最初のユーザープロンプト:サーバーは言いました。
- 」すべてのトラフィックを送信するか、特定のトラフィックのみを送信するかを選択します。。
- 」入力
Tunnel all
するTunnel company
」。
2番目のユーザープロンプト:サーバーは次のように言います。
- 」パスワードを入力してください。」
ご覧のとおり、簡単な質問はecho
間違った答えを提供します。 :-)
可能なexpect
スクリプトの場合、テキストを挿入する前の実際の(正確な)サーバー要求は次のとおりです。
最初のヒント:
GROUP: [tunnel MyCompany|tunnel all]:
、挿入する回答は次のようにする必要があります。tunnel MyCompany
2番目のヒント:
Password:
挿入する回答は次のとおりです。123456789
答え1
一般に、VPNソフトウェアはセキュリティ上のリスクと見なされ、ユーザーがパスワードを入力することはできません。
考えられる解決策の1つは、次のようにパスワードをパイプすることです。
echo -e "Tunnel all\nYourPassword" | openconnect --authenticate --user=<username> "VPN host"
私たちが話しているのは、次のようなスクリプトの作成方法に興味がある場合です。
- ファイルにパスワードを保存することのセキュリティの意味を理解し、ファイルへの読み取りアクセスをコマンドを
openconnect
実行するユーザーに制限することが重要です。
PS YourPasswordを実際のパスワードに変更してください。
答え2
これは私にとって効果的です。
echo 'your password' > passwd.auth
sudo openconnect <SERVER IP> --user=USERNAME --servercert sha256:<SHA256> --passwd-on-stdin < passwd.auth