返回目录
开源项目系统与运维类新手

lazyssh:基于终端的交互式 SSH 服务器管理器(Go 编写)

Lazyssh 是一个受 lazydocker 与 k9s 启发的终端交互式 SSH 管理器,用 Go 编写。它直接读取并维护 ~/.ssh/config,让你用键盘驱动的 UI 完成服务器浏览、模糊搜索、标签过滤、一键 SSH 登录、增删改服务器、端口转发与密钥相关配置,并通过系统原生 OpenSSH 二进制建立连接。

0 次阅读2026/09/15 发布
lazyssh:基于终端的交互式 SSH 服务器管理器(Go 编写) 来源图片

社区作者 · 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 下载二进制

  1. 检测最新版本:
命令
LATEST_TAG=$(curl -fsSL https://api.github.com/repos/Adembc/lazyssh/releases/latest | jq -r .tag_name)
  1. 下载对应系统的二进制(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/

  1. 解压:
  2. 移动到 PATH 中的目录(例如 /usr/local/bin):
  3. 运行:lazyssh

方式三:从源码构建

  1. 克隆仓库并进入目录:
命令
git clone https://github.com/Adembc/lazyssh.git
命令
cd lazyssh
  1. 为 macOS 构建:
命令
make build
  1. 运行构建产物:
命令
./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 切换标签页。

来源教程配图

lazyssh logo
配图 1 · lazyssh logo查看原图
App starting splash/loader
配图 2 · App starting splash/loader查看原图
Server list view
配图 3 · Server list view查看原图
Fuzzy search servers
配图 4 · Fuzzy search servers查看原图
Add a new server
配图 5 · Add a new server查看原图
SSH connection details
配图 6 · SSH connection details查看原图
教程配图
配图 7 · 教程配图查看原图

适用场景

在终端中统一浏览和管理 ~/.ssh/config 里的大量服务器条目
按别名
IP 或 prod/dev/test 等标签模糊搜索并一键 SSH 登录
快速新增
编辑
删除 SSH 主机条目
避免手工改配置文件
为常用服务器置顶收藏并 Ping 检查在线状态
配置端口转发(LocalForward/RemoteForward/DynamicForward)
连接复用与 ProxyJump/ProxyCommand
管理多把 SSH 密钥并利用密钥自动补全选择
复制 SSH 命令到剪贴板