imShakil/pacli
GitHub: imShakil/pacli
一个基于 Python 的本地加密密钥管理 CLI 工具,无需云端即可安全存储和操作密码、API 密钥与 SSH 凭证。
Stars: 2 | Forks: 0
# 🔐 pacli - Secrets 管理 CLI

[](https://github.com/imshakil/pacli/actions)
[](https://results.pre-commit.ci/latest/github/imShakil/pacli/main)
[](https://pypi.org/project/pacli-tool/)
[](https://pepy.tech/projects/pacli-tool)
[](https://pypi.org/project/pacli-tool/)
[](LICENSE)
[](https://github.com/imShakil/pacli)
pacli 是一个安全的、本地优先的 secrets 管理器,通过加密和主密码保护来存储您的密码、API 密钥和 SSH 凭证——无需云依赖。
## 功能
- 安全地在本地存储和管理 secrets
- 主密码保护
- 支持为 token、password 和 SSH 连接分别提供选项
- 添加、检索、更新和删除 secrets
- 将 secrets 直接复制到剪贴板
- 支持密钥文件的 SSH 连接管理
- 通过 [LinklyHQ](https://linklyhq.com/?via=ShakilOps) 集成实现 URL 缩短
- 将 secrets 列表导出为 JSON 或 CSV 文件
- 易于使用的命令行界面
- **Web UI**:通过现代化的 Web 界面管理 secrets
## Sonarqube 代码质量指标
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
[](https://sonarcloud.io/summary/new_code?id=imShakil_pacli)
## 安装
### 推荐:pipx(隔离环境,无冲突)
[pipx](https://pipx.pypa.io/) 会在各自独立的环境中安装 CLI 工具,并将其全局可用。这是最安全、最干净的方法。
```
# 安装 pipx(如果您尚未安装)
pip install pipx
pipx ensurepath
# 安装 pacli
pipx install pacli-tool
```
### 标准 pip
```
pip install pacli-tool
```
### 现代 Linux(外部管理的 Python)
如果您遇到 `externally-managed-environment` 错误,请选择以下方法之一:
```
# 使用虚拟环境(对系统 Python 最安全)
python3 -m venv ~/.venv/pacli
~/.venv/pacli/bin/pip install pacli-tool
# 然后将二进制文件添加到您的 PATH
echo 'export PATH="$HOME/.venv/pacli/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
```
### 从源码安装
```
git clone https://github.com/imshakil/pacli.git
cd pacli
pip install -e .
```
或者无需克隆直接从 GitHub 安装:
```
pip install git+https://github.com/imshakil/pacli.git
```
### 验证安装
```
pacli --help
```
## 使用方法
要查看所有可用的命令和选项:
```
pacli --help
```
### 常用命令
| 命令 | 描述 |
|------------------------|--------------------------------------------------|
| `init` | 初始化 pacli 并设置主密码 |
| `add` | 使用标签添加 secret |
| `get` | 通过标签检索 secrets |
| `get-by-id` | 通过 ID 检索 secret |
| `update` | 通过标签更新旧 secret |
| `update-by-id` | 通过 ID 更新旧 secret |
| `list` | 列出所有保存的 secrets |
| `delete` | 通过标签删除 secret |
| `delete-by-id` | 通过 ID 删除 secret |
| `ssh` | 使用保存的凭证连接到 SSH 服务器 |
| `short` | 使用 LinklyHQ 服务缩短 URL |
| `cc` | 将 stdin 内容复制到剪贴板 |
| `change-master-key` | 更改主密码且不丢失数据 |
| `export` | 将 secrets 导出为 JSON 或 CSV 格式 |
| `web` | 启动/管理用于管理 secrets 的 Web UI |
| `version` | 显示 pacli 的当前版本 |
### 示例
#### 添加和检索 Secrets
```
# 初始化 pacli(运行一次)
pacli init
# 添加密码
pacli add --pass github
# 添加令牌
pacli add --token api-key
# 添加 SSH 连接
pacli add --ssh ec2-vm user:192.168.1.100
# 使用密钥文件添加 SSH 连接
pacli add --ssh ec2-vm user:192.168.1.100 --key ~/.ssh/id_rsa
# 检索机密信息
pacli get github
# 通过 SSH 连接
pacli ssh ec2-vm
# 将机密信息导出为 JSON
pacli export --format json --output my_secrets.json
# 将机密信息导出为 CSV
pacli export --format csv --output my_secrets.csv
# 缩短 URL
pacli short https://example.com/very/long/url
# 使用自定义名称缩短并复制到剪贴板
pacli short https://example.com -n "My Link" --clip
# 将文件内容复制到剪贴板
cat file.txt | pacli cc
# 将命令输出复制到剪贴板
echo "Hello World" | pacli cc
# 将 API 响应复制到剪贴板
curl -s https://api.example.com/data | pacli cc
```
## Web UI
[](https://mhosen.com/projects/pacli---secrets-management-cli)
启动 Web UI,通过现代化、用户友好的界面管理您的 secrets:
```
# 启动 Web UI(在默认浏览器中打开)
pacli web
# 在后台模式下启动
pacli web start
# 停止后台模式
pacli web stop
# 检查后台状态
pacli web status
# 在自定义主机和端口上启动
pacli web --host 0.0.0.0 --port 8080
# 在自定义主机和端口上于后台启动
pacli web start --host 0.0.0.0 --port 8080
# 启动但不打开浏览器
pacli web --no-browser
# 在后台启动但不打开浏览器
pacli web start --no-browser
```
Web UI 提供:
- 🔐 主密码认证
- 📋 查看、添加、编辑和删除 secrets
- 🔍 按类型搜索和过滤 secrets
- 📋 显示带有创建/更新时间戳的 secrets
- 👁️ 切换 secret 可见性
- 📋 将 secrets 复制到剪贴板
- 🎨 适用于桌面和移动端的响应式设计
## 显示格式
- 凭证显示为:`username:password`
- SSH 连接显示为:`user:ip` 或 `user:ip (Key: /path/to/key)`
## 复制到剪贴板
要直接将 secret 复制到剪贴板,请使用 `--clip` 选项:
```
pacli get google --clip
```
### 管道用法
使用 `pacli cc` 将任何命令输出或文件内容复制到剪贴板:
```
# 复制文件内容
cat ~/.ssh/id_rsa.pub | pacli cc
# 复制命令输出
ls -la | pacli cc
# 复制 JSON 响应
curl -s https://api.github.com/user | pacli cc
```
有关更多信息,请使用 `pacli --help` 或查看文档。
## 技巧
### 避免主密码提示
为了避免重复输入主密码,您可以将其设置为环境变量:
```
# 仅限当前会话
export PACLI_MASTER_PASSWORD="your-master-password"
# 或者添加到您的 shell 配置文件以永久使用
echo 'export PACLI_MASTER_PASSWORD="your-master-password"' >> ~/.bashrc # For bash
echo 'export PACLI_MASTER_PASSWORD="your-master-password"' >> ~/.zshrc # For zsh
```
**安全提示:** 将密码添加到您的 shell 配置文件中会使其持久化,但安全性会降低。请使用仅限会话的方法以获得更好的安全性。
### URL 缩短设置
要使用 URL 缩短功能,请将您的 [LinklyHQ](https://linklyhq.com/?via=ShakilOps) 凭证设置为环境变量:
```
# 设置 LinklyHQ 凭据
export PACLI_LINKLYHQ_KEY="your_api_key"
export PACLI_LINKLYHQ_WID="your_workspace_id"
# 添加到您的 shell 配置文件以永久使用
echo 'export PACLI_LINKLYHQ_KEY="your_api_key"' >> ~/.bashrc
echo 'export PACLI_LINKLYHQ_WID="your_workspace_id"' >> ~/.bashrc
```
## 演示

标签:API密钥管理, Bandit, DevSecOps, JSON导出, LinklyHQ, meg, PyPI, Python, SonarQube, SSH凭证, StruQ, URL缩短, Web界面, 上游代理, 主密码, 代码分析, 信息安全, 凭证管理, 剪贴板操作, 加密, 安全, 密码管理器, 开源, 无云依赖, 无后门, 本地优先, 漏洞扫描器, 超时处理, 逆向工具