开源项目系统与运维类新手
lazyssh:基于终端的交互式 SSH 服务器管理器(Go 编写)
Lazyssh 是一个受 lazydocker 与 k9s 启发的终端交互式 SSH 管理器,用 Go 编写。它直接读取并维护 ~/.ssh/config,让你用键盘驱动的 UI 完成服务器浏览、模糊搜索、标签过滤、一键 SSH 登录、增删改服务器、端口转发与密钥相关配置,并通过系统原生 OpenSSH 二进制建立连接。
0 次阅读2026/09/15 发布
社区作者 · zZz
它解决什么问题
Lazyssh 是一个基于终端的交互式 SSH 管理器,灵感来自 lazydocker 和 k9s,但专注于在终端里管理你的服务器群落(fleet of servers)。
借助 lazyssh,你可以快速浏览、连接、管理以及在本地机器和 ~/.ssh/config 中定义的任意服务器之间传输文件(文件传输为规划中的功能)。不必再记忆 IP 地址或手写冗长的 scp 命令,只需要一个干净的、键盘驱动的界面。
界面示意(按来源图片顺序):
- 配图 1:lazyssh logo。
- 配图 2:应用启动时的加载/欢迎界面(Startup splash/loader)。
- 配图 3:服务器管理主面板(Server list view),显示所有已配置服务器、状态指示、置顶收藏与导航。
- 配图 4:模糊搜索界面(Fuzzy search servers)。
- 配图 5:新增服务器表单(Add a new server)。
- 配图 6:连接服务器(SSH connection details)。
- 配图 7:Buy Me a Coffee 支持按钮。
主要功能
服务器管理
- 从 ~/.ssh/config 读取并以可滚动列表展示服务器。
- 在 UI 中新增服务器,提供较完整的 SSH 配置选项。
- 在 UI 中以分页(tabbed)界面直接编辑已有服务器条目。
- 安全删除服务器条目。
- 置顶/取消置顶服务器,让常用收藏保持在顶部。
- Ping 服务器以检查状态。
快速导航
- 按别名、IP 或标签进行模糊搜索。
- 选中服务器后按 Enter 一键 SSH 登录。
- 为服务器打标签(例如 prod、dev、test)以便快速筛选。
- 按别名或最近一次 SSH 时间排序(可切换并反向)。
高级 SSH 配置
- 端口转发(LocalForward、RemoteForward、DynamicForward)。
- 连接复用(connection multiplexing),加快后续连接。
- 高级认证选项(公钥、密码、agent forwarding)。
- 安全设置(ciphers、MACs、密钥交换算法)。
- 代理设置(ProxyJump、ProxyCommand)。
- 大量 SSH 配置项按分页界面组织:
- Basic:Host、user、port、keys、tags
- Connection:Proxy、超时、multiplexing、canonicalization
- Forwarding:端口转发、X11、agent
- Authentication:密钥、密码、认证方法、算法设置
- Advanced:安全、加密、环境变量、调试
密钥管理
- SSH 密钥自动补全,自动检测可用密钥。
- 智能密钥选择,支持多个密钥。
规划中的功能(Upcoming)
- 通过易用的选择器 UI 在本地与服务器之间复制文件。
- SSH 密钥部署功能:使用默认本地公钥(~/.ssh/id_ed25519.pub 或 ~/.ssh/id_rsa.pub);手动粘贴自定义公钥;生成新密钥对并部署;自动以正确权限把密钥追加到 ~/.ssh/authorized_keys。
安全说明
- lazyssh 不引入新的安全风险,它只是对现有 ~/.ssh/config 的 UI/TUI 封装。
- 所有 SSH 连接都通过系统原生 ssh 二进制(OpenSSH)执行。
- 私钥、密码和凭据不会被 lazyssh 存储、传输或修改。
- 你现有的 IdentityFile 路径与 ssh-agent 集成方式保持完全不变。
- lazyssh 只读取和更新 ~/.ssh/config,任何更改前都会自动创建该文件的备份。
- SSH 配置文件的权限会被保留。
配置安全性:非破坏性写入与备份
- 非破坏性编辑:只写入 ~/.ssh/config 中最小必需的改动;解析器会保留已有注释、空白、顺序以及未触及的设置,手写注释与格式得以保留。
- 原子写入:更新先写入临时文件,再原子重命名覆盖原文件,降低写入不完整风险。
- 备份:首次修改前创建一个名为 config.original.backup 的一次性快照,放在 SSH 配置旁边;若该文件已存在,则永不重建或覆盖。此后每次保存都会创建时间戳备份,形如 ~/.ssh/config--lazyssh.backup,最多保留 10 份并自动删除最旧的。
技术栈与致谢
- 使用 tview 和 tcell 构建。
- 灵感来自 k9s 和 lazydocker。
贡献约定
- 欢迎提交 issue 与 PR(fork 后提交 pull request)。
- 仓库通过 GitHub Action 强制语义化 PR 标题,格式为:type(scope): short descriptive subject。
- scope 可选,取值应为:ui、cli、config、parser。
- 允许的 type:feat(新功能)、fix(缺陷修复)、improve(非重构/非性能的质量或 UX 改进)、refactor(既不修 bug 也不加功能的代码改动)、docs(仅文档)、test(新增或重构测试)、ci(CI/CD 或自动化)、chore(维护任务、依赖升级、非代码基础设施)、revert(回滚提交)。
- 示例:feat(ui): add server pinning and sorting options;fix(parser): handle comments at end of Host blocks;improve(cli): show friendly error when ssh binary missing;refactor(config): simplify backup rotation logic;docs: add installation instructions for Homebrew;ci: cache Go toolchain and dependencies。
- 若 PR 涉及多个区域,选择最相关的 scope 或省略 scope。
快捷键 主列表界面:
- /:切换搜索栏
- ↑↓ / j k:浏览服务器
- Enter:SSH 登录选中服务器
- c:复制 SSH 命令到剪贴板
- g:Ping 选中服务器
- r:刷新后台数据
- a:新增服务器
- e:编辑服务器
- t:编辑标签
- d:删除服务器
- p:置顶/取消置顶服务器
- s:切换排序字段
- S:反转排序顺序
- q:退出
服务器表单内:
- Ctrl+H:上一个标签页
- Ctrl+L:下一个标签页
- Ctrl+S:保存
- Esc:取消
提示:列表顶部的提示栏会显示最常用的快捷键。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
环境准备:
- macOS 使用 Homebrew 安装时,需先有可用的 brew。
- 使用下载二进制方式时,需要 curl 与 jq(脚本用 jq 解析 GitHub API 返回的最新 tag),支持 Darwin/Linux 与 amd64/arm64。
- 从源码构建时,需要 Go 工具链与 make。
方式一:Homebrew(macOS)
步骤 1 · 执行:
brew install Adembc/homebrew-tap/lazyssh方式二:从 Releases 下载二进制
- 检测最新版本:
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/Adembc/lazyssh/releases/latest | jq -r .tag_name)- 下载对应系统的二进制(Darwin/Linux 与 amd64/arm64 均支持):
curl -LJO "https://github.com/Adembc/lazyssh/releases/download/${LATEST_TAG}/lazyssh_$(uname)_$(uname -m).tar.gz"tar -xzf lazyssh_$(uname)_$(uname -m).tar.gz
sudo mv lazyssh /usr/local/bin/
- 解压:
- 移动到 PATH 中的目录(例如 /usr/local/bin):
- 运行:lazyssh
方式三:从源码构建
- 克隆仓库并进入目录:
git clone https://github.com/Adembc/lazyssh.gitcd lazyssh- 为 macOS 构建:
make build- 运行构建产物:
./bin/lazyssh或者直接运行
make run首次运行与配置安全:
- lazyssh 启动后会读取 ~/.ssh/config 并展示服务器列表(见配图 2 启动加载界面、配图 3 服务器列表)。
- 首次对 ~/.ssh/config 做出更改之前,会在配置文件旁创建一次性快照 config.original.backup;若该文件已存在,则永不重建或覆盖。
- 之后每次保存都会生成时间戳备份,形如 ~/.ssh/config--lazyssh.backup,最多保留 10 份,自动删除最旧的。
- 写入采用非破坏性编辑(保留注释、空白、顺序)与原子写入(先写临时文件再重命名覆盖)。
常见问题与注意事项:
- 下载脚本依赖 jq 与 GitHub API,若未安装 jq 或触发 API 限流,脚本会失败。
- SSH 连接通过系统原生 ssh(OpenSSH)二进制执行,系统缺少 ssh 时无法建立连接。
- 私钥、密码与凭据不会被 lazyssh 存储、传输或修改;IdentityFile 与 ssh-agent 集成保持原样。
- 编辑时请在 UI 中按 Ctrl+S 保存、Esc 取消;表单内用 Ctrl+H / Ctrl+L 切换标签页。
适用场景
在终端中统一浏览和管理 ~/.ssh/config 里的大量服务器条目
按别名
IP 或 prod/dev/test 等标签模糊搜索并一键 SSH 登录
快速新增
编辑
删除 SSH 主机条目
避免手工改配置文件
为常用服务器置顶收藏并 Ping 检查在线状态
配置端口转发(LocalForward/RemoteForward/DynamicForward)
连接复用与 ProxyJump/ProxyCommand
管理多把 SSH 密钥并利用密钥自动补全选择
复制 SSH 命令到剪贴板
