OpenConnect:执行身份验证请求时传递用户密码?

OpenConnect:执行身份验证请求时传递用户密码?

目前我正在使用以下命令执行身份验证请求以获取服务器证书(FINGERPRINT)和OpenConnect-Cookie:

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

因此,我始终必须在稍后出现的用户提示中输入我的密码。

是否有一个选项可以将密码传递给OpenConnect上层命令中已有的密码?

例如,通过扩展命令...

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

...?


挑战是:

用户鲁伊·弗里贝罗只想在命令中回显密码。不幸的是,这在我们的例子中不起作用,因为服务器在到达第二个提示(=密码提示)之前又提供了一个用户提示。

事情会是这样的:

  1. 第一个用户提示:服务器说

    • 请选择是否要传输所有流量或仅传输特定流量
    • 输入Tunnel allTunnel company”。
  2. 第二个用户提示:服务器正在说

    • 请输入您的密码。

正如您所看到的,简单的问题echo会给出错误的答案。 :-)


对于可能的expect脚本,插入文本之前的真实(确切)服务器请求如下所示:

  1. 第一个提示:GROUP: [tunnel MyCompany|tunnel all]:,答案插入应该是tunnel MyCompany

  2. 第二个提示:Password:,答案插入应该是123456789

答案1

通常,VPN 软件不允许用户输入密码,因为这被认为存在安全风险。

一种可能的解决方案是通过管道输入密码,如下所示:

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

相关内容