目前我正在使用以下命令执行身份验证请求以获取服务器证书(FINGERPRINT)和OpenConnect
-Cookie:
openconnect --authenticate --user=<username> "VPN host"
因此,我始终必须在稍后出现的用户提示中输入我的密码。
是否有一个选项可以将密码传递给OpenConnect
上层命令中已有的密码?
例如,通过扩展命令...
openconnect --authenticate --user=<username> password=<password> "VPN host"
...?
挑战是:
用户鲁伊·弗里贝罗只想在命令中回显密码。不幸的是,这在我们的例子中不起作用,因为服务器在到达第二个提示(=密码提示)之前又提供了一个用户提示。
事情会是这样的:
第一个用户提示:服务器说
- ”请选择是否要传输所有流量或仅传输特定流量。
- ”输入
Tunnel all
或Tunnel company
”。
第二个用户提示:服务器正在说
- ”请输入您的密码。”
正如您所看到的,简单的问题echo
会给出错误的答案。 :-)
对于可能的expect
脚本,插入文本之前的真实(确切)服务器请求如下所示:
第一个提示:
GROUP: [tunnel MyCompany|tunnel all]:
,答案插入应该是tunnel MyCompany
第二个提示:
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