簡體   English   中英

在 bash 腳本中輸入 openvpn 私鑰密碼

[英]Enter openvpn private key password in a bash script

我在 bash 腳本中得到了這個函數:

function start_vpn() {
sudo ip netns exec frootvpn openvpn --config /etc/openvpn/frootvpn.conf &

while ! sudo ip netns exec frootvpn ip a show dev tun0 up; do
    sleep .5
done
}

它失敗了,因為它不停地讓我輸入私鑰密碼。 當我手動輸入sudo ip netns exec frootvpn openvpn --config /etc/openvpn/frootvpn.conf時,我得到了私鑰提示,但在腳本中它不等我輸入它:)

如果您的意思是 sudo 密碼,您可以嘗試

sudo sh -c 'ip netns exec frootvpn openvpn --config /etc/openvpn/frootvpn.conf &'

對於 openvpn 密碼,您可以嘗試要求它從 fifo 讀取它。 然后,您會將您的密碼回顯到 fifo 中。 我沒試過這個。

mkfifo ~/myfifo
sudo sh -c 'ip ... openvpn --askpass ~/myfifo ... &'

然后以交互方式,如果您不希望密碼回顯:

$ stty -echo; cat >~/myfifo; stty echo
type your password
type control-D for eof

這是我在 Linux/Ubuntu 系統上自動輸入兩個密碼的解決方案。 (sudo-pw 和 openvpn-pw。)

在文件/home/user_name/.bashrc我添加了行:

alias run_openvpn='sudo date < /path/to/sudo_pw_file && sudo openvpn --config /path/to/key_file --askpass /path/to/private_key_file'

在文件 sudo_pw_file 和 private_key_file 中,密碼以純文本形式存儲。 因此存在安全風險。

然后你可以從終端執行exec bash

從那時起,您可以使用run_openvpn從終端建立 vpn 連接。

我在初步步驟中用於輸入 sudo 密碼的sudo date ,以便在其他命令中不要求輸入。

順便說一句:您也可以使用> settings > network配置您的 vpn 連接,但如果我從那里開始 vpn 連接,它們會干擾。 所以我從終端開始一個,從那里開始一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM