imShakil/pacli

GitHub: imShakil/pacli

一个基于 Python 的本地加密密钥管理 CLI 工具,无需云端即可安全存储和操作密码、API 密钥与 SSH 凭证。

Stars: 2 | Forks: 0

# 🔐 pacli - Secrets 管理 CLI ![pacli-logo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/b515051ba3003250.jpg) [![构建状态](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/7a6da3ca96003251.svg)](https://github.com/imshakil/pacli/actions) [![pre-commit.ci 状态](https://results.pre-commit.ci/badge/github/imShakil/pacli/main.svg)](https://results.pre-commit.ci/latest/github/imShakil/pacli/main) [![PyPI 版本](https://img.shields.io/pypi/v/pacli-tool.svg)](https://pypi.org/project/pacli-tool/) [![PyPI 下载量](https://img.shields.io/pepy/dt/pacli-tool?style=flat)](https://pepy.tech/projects/pacli-tool) [![Python 版本](https://img.shields.io/pypi/pyversions/pacli-tool.svg)](https://pypi.org/project/pacli-tool/) [![许可证](https://img.shields.io/github/license/imshakil/pacli)](LICENSE) [![security:bandit](https://img.shields.io/badge/security-bandit-yellow.svg)](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/api/project_badges/measure?project=imShakil_pacli&metric=ncloc)](https://sonarcloud.io/summary/new_code?id=imShakil_pacli) [![质量门状态](https://sonarcloud.io/api/project_badges/measure?project=imShakil_pacli&metric=alert_status)](https://sonarcloud.io/summary/new_code?id=imShakil_pacli) [![覆盖率](https://sonarcloud.io/api/project_badges/measure?project=imShakil_pacli&metric=coverage)](https://sonarcloud.io/summary/new_code?id=imShakil_pacli) [![可靠性评级](https://sonarcloud.io/api/project_badges/measure?project=imShakil_pacli&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=imShakil_pacli) [![安全性评级](https://sonarcloud.io/api/project_badges/measure?project=imShakil_pacli&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=imShakil_pacli) [![可维护性评级](https://sonarcloud.io/api/project_badges/measure?project=imShakil_pacli&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=imShakil_pacli) [![重复行 (%)](https://sonarcloud.io/api/project_badges/measure?project=imShakil_pacli&metric=duplicated_lines_density)](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 [![Web UI](https://mhosen.com/projects/pacli/pacli-web-ui.png)](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 ``` ## 演示 ![demo](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/12cf8bbd4a003254.gif)
标签:API密钥管理, Bandit, DevSecOps, JSON导出, LinklyHQ, meg, PyPI, Python, SonarQube, SSH凭证, StruQ, URL缩短, Web界面, 上游代理, 主密码, 代码分析, 信息安全, 凭证管理, 剪贴板操作, 加密, 安全, 密码管理器, 开源, 无云依赖, 无后门, 本地优先, 漏洞扫描器, 超时处理, 逆向工具