![如何在终端的一行中使用用户名和密码运行 openconnect?](https://linux22.com/image/1157314/%E5%A6%82%E4%BD%95%E5%9C%A8%E7%BB%88%E7%AB%AF%E7%9A%84%E4%B8%80%E8%A1%8C%E4%B8%AD%E4%BD%BF%E7%94%A8%E7%94%A8%E6%88%B7%E5%90%8D%E5%92%8C%E5%AF%86%E7%A0%81%E8%BF%90%E8%A1%8C%20openconnect%EF%BC%9F.png)
我openconnect
在Ubuntu 16.04中使用终端,当我想要运行它时,我需要进入三个阶段:
- “是/否”
- “用户名”
- “密码”
我怎样才能绕过上述openconnect
阶段一条线(例如使用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=