lsh 是一个用 Zig 写的命令行 SSH 连接管理工具。它把常用 SSH 连接保存到本地配置文件里,然后通过编号快速连接。
- 管理多组 SSH 连接配置
- 使用
lsh list查看已配置的连接列表 - 使用
lsh <number>按编号连接服务器 - 配置文件保存到用户目录,不依赖项目目录
- 支持多平台打包脚本
- 支持安装到当前用户的
~/.local/bin
构建依赖:
- Zig 0.16.0 或更高版本
运行依赖:
sshsshpass
lsh 使用系统 ssh 发起连接。由于系统 ssh 不支持直接通过普通参数传入密码,所以密码连接依赖 sshpass。
从源码安装到当前用户目录:
bash scripts/install.sh默认安装到:
~/.local/bin/lsh
如果 ~/.local/bin 不在 PATH 中,可以把下面内容加入 shell 配置文件:
export PATH="$HOME/.local/bin:$PATH"验证安装:
lsh help如果系统没有 sshpass,可以从 apt 包下载并解压到用户目录,不需要 sudo:
workdir=$(mktemp -d)
cd "$workdir"
apt download sshpass
dpkg-deb -x sshpass_*.deb extracted
install -m 755 extracted/usr/bin/sshpass "$HOME/.local/bin/sshpass"验证:
sshpass -V配置文件位置:
~/.config/lsh/config.json
也可以通过命令查看:
lsh config-path初始化配置文件:
lsh init配置示例:
{
"version": 1,
"entries": [
{
"name": "demo-server",
"host": "192.0.2.10",
"port": 22,
"user": "alice",
"password": "your-password",
"extra_args": ["-o", "StrictHostKeyChecking=accept-new"]
}
]
}字段说明:
name:连接名称,显示在列表中host:服务器 IP 或域名port:SSH 端口,通常是22user:SSH 用户名password:SSH 密码,明文保存extra_args:传给ssh的额外参数
查看连接列表:
lsh list示例输出:
1. demo-server - alice@192.0.2.10:22
按编号连接:
lsh 1连接命令格式:
lsh <number>打包当前版本的 Linux x86_64 包:
bash scripts/package.sh --target x86_64-linux默认多平台打包:
bash scripts/package.sh默认目标:
x86_64-linuxaarch64-linuxx86_64-macosaarch64-macos
打包产物位于:
dist/lsh-<version>-<target>/lsh
dist/lsh-<version>-<target>.tar.gz
常用参数:
bash scripts/package.sh --target x86_64-linux
bash scripts/package.sh --target x86_64-linux --target aarch64-linux
bash scripts/package.sh --no-archive
bash scripts/package.sh --output release
bash scripts/package.sh --debug当前版本按设计使用明文配置文件保存密码:
~/.config/lsh/config.json
配置文件会尽量以 0600 权限创建,但密码仍会以明文保存在磁盘上。请只在可信机器上使用。
如果是生产环境或长期使用,建议优先改用 SSH key,而不是密码登录。