如何永久存储服务器密钥? openconnect

时间:2015-06-29 10:23:34

标签: bash terminal vpn

连接成功后是否有存储服务器密钥的方法, ssh的方式呢?

无论连接多少次,我都必须始终输入“” 接受服务器密钥。我希望它能被永远接受和存储。

###############################
amir@amirpc:~$ sudo openconnect uk.cisadd.com -u myusername
POST https://uk.cisadd.com/
Attempting to connect to server xxx.xxx.xxx.xxx:443
SSL negotiation with uk.cisadd.com
Server certificate verify failed: signer not found

Certificate from VPN server "uk.cisadd.com" failed verification.
Reason: signer not found
Enter 'yes' to accept, 'no' to abort; anything else to view: 

Connected to HTTPS on XXX.XXX.XXX.XXX
###############################

可以编写bash脚本来运行openconnect并转义吗?

5 个答案:

答案 0 :(得分:7)

我敢打赌,您可以使用选项window.location.href=new_url或拥有有效的SSL证书来执行此操作:

--no-cert-check

答案 1 :(得分:5)

最好的方法是第一次登录服务器时将--servercert保存在这样的剪贴板中

echo "password" | sudo openconnect  -u username  uk2.cisadd.com --servercert sha25:xxxxxxx

答案 2 :(得分:3)

如果您不在乎解密您的流量,则可以使用--no-cert-check。否则使用--servercert=FINGERPRINT,其中FINGERPRINT是"服务器密钥哈希"如证书信息中所示。

答案 3 :(得分:1)

我在OpenWRT上遇到了同样的问题,我的解决方案是安装'ca-certificates'软件包。

# opkg install ca-certificates

一旦我这样做,openconnect就会停止标记'未找到签名者'。

此解决方案的好处是您使用的是预期的证书,并限制了您破坏网络的机会。

答案 4 :(得分:0)

openconnect 7.0.6 版 以后不再有 --no-cert-check 选项。 就这样,我做了下面的过程,作为shell脚本绕过了这个问题:

首先,您需要服务器认证,您可以通过以下方式找到:

echo <password> | sudo openconnect <hostname> --user=<username> --passwd-on-stdin --no-dtls   

然后你必须像这样从预期的输出中找到 --servercert 值:

...
SSL negotiation with xxxxxxx
Server certificate verify failed: signer not found

Certificate from VPN server "xxxxxxx" failed verification.
Reason: signer not found
To trust this server in future, perhaps add this to your command line:
    --servercert pin-sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <--- Here it is
Enter 'yes' to accept, 'no' to abort; anything else to view: fgets (stdin): Operation now in progress

最后,复制认证代码后,您可以编写如下 bash 脚本:

echo <password> | sudo openconnect <hostname> --user=<username> --passwd-on-stdin --no-dtls --servercert pin-sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx