---
# System prepended metadata

title: 使用 pass 密碼管理工具來提供 OpenVPN 帳號密碼(詳細指南)
tags: [openVPN, pass, Ubuntu]

---

#  使用 pass 密碼管理工具來提供 OpenVPN 帳號密碼(詳細指南)

想要儲存密碼但又不想要直接露出明文?~~喜歡露出除外~~

使用 pass 來安全地存儲 OpenVPN 的帳號密碼，達到避免存放明文 credentials.txt，同時保持 OpenVPN 的自動登入功能。

## 🔹 步驟 1: 安裝 pass
 
 在 Ubuntu 上：
 ```bash=
 sudo apt update
 sudo apt install pass -y
 ```
 

---

## 🔹 步驟 2: 初始化 pass
 ✅ 生成GPG金鑰，如果你尚未有 GPG 金鑰，請先生成：
 ```
 gpg --full-generate-key
 ```
 📌1. 選擇 RSA and RSA（預設選項） 
 ![image](https://hackmd.io/_uploads/HJGhnQ1Y1x.png)
 📌2.密鑰大小輸入 4096 *小知識
 ![image](https://hackmd.io/_uploads/H1fN6XJtkx.png)
 📌3.選擇無限期有效（建議:2y）
 ![image](https://hackmd.io/_uploads/SkMH1Vktye.png)
 📌4.設置 GPG 密碼（用於解密密碼，所以不要忘記）
 ![image](https://hackmd.io/_uploads/B1dFWNyFyg.png)

---

#### 🔹 確認 GPG 金鑰 ID：
 ```
 gpg --list-secret-keys --keyid-format LONG
 ```
 如果成功你會看到：
 ```b=
 sec   rsa4096/幫我記得這段 2025-02-04 [SC] [expires: 2027-02-04]
       2C88CEF2AD7D7D86EC8CFED4DB14E4349DB2DB3C
 uid                 [ultimate] openvpn (openvpn_key) 
 ssb   rsa4096/97D2781144EEDC0E 2025-02-04 [E] [expires: 2027-02-04]
 
 ```
#### ✅ 初始化 pass
請使用你的 GPG Key ID
 ```
 pass init "幫我記得這段"
 ```
 📌 解讀成功訊息
 ![image](https://hackmd.io/_uploads/S1ujvVkKyl.png)
 
 * 已建立 pass 密碼存儲目錄 (~/.password-store/)
  pass 會將所有加密密碼存儲在這個資料夾內，每個密碼都是獨立的 GPG 加密文件。
 * 密碼存儲已初始化，並與GPG金鑰 XXXXXXXXXXXX 綁定
 這表示只有該GPG金鑰的擁有者（你）可以解密和讀取密碼。


---
## 🔹 步驟 3: 儲存 OpenVPN 帳號密碼
 1. 儲存OpenVPN帳號密碼
         ``` 
         pass insert -m openvpn/credentials
         # -m 允許多行輸入
         ```
     📌然後輸入：
     ![image](https://hackmd.io/_uploads/r1E8sVyYyl.png)
     第一行是 VPN 帳號
     第二行是 VPN 密碼
     輸入完成Ctrl+D儲存退出
 
 2. 測試讀取密碼
     ```
     pass openvpn/credentials
     ```
      📌如果成功即將看到:(如果沒有請把上述在跑一次good luck)
      ![image](https://hackmd.io/_uploads/ryfL2NJYke.png)
 
---
## 🔹 步驟 4: 配置 OpenVPN 來使用 pass
 
 1. 打開 OpenVPN 設定文件（通常是 /etc/openvpn/vpn.ovpn）
     ```
     sudo vim /etc/openvpn/vpn.ovpn
     ```
 2. 修改 auth-user-pass 設定
     ```
     auth-user-pass /etc/openvpn/credentials.txt
     ```
     改為
     ```
     auth-user-pass /dev/stdin
     ```  
     
##  🔹 步驟 5: 啟動 OpenVPN 並自動讀取密碼
 1. 使用 pass 來提供帳號密碼:
 
     ```
     (echo "$(pass openvpn/credentials)") | sudo openvpn --config /etc/openvpn/vpn.ovpn --auth-user-pass /dev/stdin
     ```
這會將 pass openvpn/credentials的輸出作為OpenVPN的密碼輸入，而不需要明文存放~~credentials.txt~~
##    🔹 完成測試
![image](https://hackmd.io/_uploads/rkwZ2HJK1l.png)
✅出現:"Initialization Sequence Completed" 表示成功🔥




# 🎓小知識

### 🔹 什麼是密鑰大小（Key Size）？
密鑰大小指的是 **RSA 加密密鑰的長度（以 bit 為單位）**，影響 **安全性** 和 **性能**：

| **密鑰大小** | **安全性** | **速度** | **建議用途** |
|-------------|-----------|---------|-------------|
| **1024 位**  | ❌ 不安全（已可破解） | ✅ 快速 | 不建議使用 |
| **2048 位**  | 🟡 尚可，但未來可能有風險 | 🔹 適中 | 仍可使用，但建議 3072+ |
| **3072 位（預設）** | ✅ 安全 | 🔹 適中 | 一般建議使用 |
| **4096 位**  | 🔥 最安全 | ❌ 最慢 | 高安全性需求 |

---
References:
[Ubuntu automatically connect to Open VPN on startup](https://blog.markkulab.net/ubuntu-automatically-connect-to-openvpn-startup/)
[使用 Unix 標準的密碼管理工具 pass (password-store) 管理密碼](https://josix.tw/post/password-store-guide/
)









