在 Linux 命令行中生成隨機密碼有多種方法,以下是幾種常用且安全的方案:
---
### **方法 1:使用 `/dev/urandom` 和 `tr` 命令**
```bash
# 生成包含大小寫字母、數字和特殊符號的 16 位密碼
< /dev/urandom tr -dc 'A-Za-z0-9!@#$%^&*()_+{}[]' | head -c 16; echo
```
- **參數說明**:
- `tr -dc`:刪除(`-d`)指定字符集外的所有字符(`-c` 取補集)。
- `head -c 16`:截取前 16 個字符。
- 末尾的 `echo` 用于換行。
---
### **方法 2:使用 `openssl rand`**
```bash
# 生成 24 位 Base64 編碼密碼(包含大小寫字母、數字和 / + 符號)
openssl rand -base64 24 | tr -d '/+=\n'
# 生成更安全的密碼(自定義字符集)
openssl rand -hex 12 # 生成 24 位十六進制密碼(僅 0-9 和 a-f)
```
---
### **方法 3:使用 `pwgen` 工具**
```bash
# 安裝 pwgen(Debian/Ubuntu)
sudo apt-get install pwgen
# 生成 16 位安全密碼(包含大小寫、數字和符號)
pwgen -s -y 16 1
# 生成易記的密碼(避免相似字符)
pwgen -B -n -s 14 1
```
- **常用參數**:
- `-s`:完全隨機密碼。
- `-y`:包含至少一個特殊符號。
- `-B`:排除易混淆字符(如 `1, l, O, 0`)。
---
### **方法 4:使用 `gpg`**
```bash
# 生成 20 位隨機密碼(Base64 格式)
gpg --gen-random --armor 1 20 | head -c 20
```
---
### **方法 5:使用 `date` 和 `sha256sum`(適合簡單場景)**
```bash
date +%s | sha256sum | base64 | head -c 16; echo
```
---
### **注意事項**:
1. **密碼強度**:
- 建議長度 ≥ 12 位,包含大小寫字母、數字和特殊符號。
- 避免使用易混淆字符(如 `l, I, 1, O, 0`)。
2. **保存密碼**:
- 使用密碼管理器(如 `pass`、`KeepassXC`)。
3. **安全性驗證**:
- 檢查密碼是否符合目標系統的復雜度要求。
---
### **示例輸出**
```bash
# 方法 1 輸出示例
k7D$9@Lp2!vRqT8Z
# 方法 2 輸出示例
eF5gY2VbBmQxJHlKcWpSaQ==
# 方法 3 輸出示例
xH6@nL9!sT4vPq2Z
```
根據需求選擇合適的方法,推薦優先使用 `/dev/urandom` 或 `openssl` 以保證隨機性。