如何在终端的一行中使用用户名和密码运行 openconnect?

如何在终端的一行中使用用户名和密码运行 openconnect?

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=

相关内容