xxssh
友好的 SSH 客户端 - 多服务器管理 / 全功能终端 / 自动化 CLI / AI Agent
📝 产品介绍
0.5.6 修复 / GUI 0.10.0 新增:隧道管理界面
- CLI 修复:SOCKS5(
-D)对协议垃圾输入不再误发应答;方法协商拒绝后不再连发两个应答 - GUI 0.10.0(隧道管理):
- 侧栏 ⛓「快速隧道」:免编辑服务器档案临时发起隧道(支持临时 user@host),可"仅本次"或保存到服务器
- 隧道标签页升级为管理面板:每条转发实时显示连接数与上下行流量,可单条移除(-R 即时注销远端监听)
- 终端会话:标签页标题显示 [T n] 微标,右键「隧道...」可随时查看/添加/移除当前会话的转发
- 修复:终端会话断开/关标签后隧道监听端口不释放;-R 随机端口时移除不生效
0.5.5 新增:端口转发/隧道(免终端)
-D [bind:]port本地 SOCKS5 代理:目标由 SSH 服务器解析(socks5h 语义),可重复-L [bind:]port:host:rport本地隧道:本地端口 → 经服务器到达内网目标,可重复-R [bind:]port:host:rport远程隧道:服务器监听端口 → 回连本机目标,可重复-N免终端模式:只保持隧道不开 shell,无需 TTY、可脚本化,建立失败退出码 1,Ctrl+C 退出- profile
tunnels配置:服务器条目可保存隧道列表(D:1080/L:8080:db:5432/R:80:localhost:3000),该服务器每次连接(CLI/TUI/GUI)自动拉起 - 隧道与终端共存:
-L不带-N时终端和隧道同会话并行 - TUI/GUI 同步:TUI 服务器编辑新增「隧道」字段(逗号分隔);GUI 见 xxsshg 0.9.0
- 深度文档:
--help tunnel;任一隧道建立失败则整个连接失败(不会起一半)
0.5.4 新增:sync 目录同步安全加固
- 方向感知源根校验:
pull要求远端源目录存在、push要求本地源目录存在(rsync 规则)——修复 0.5.2/0.5.3 中远端根路径打错会被当成空目录、pull --delete可静默删光本地文件且 exit 0 的问题 - 空源 --delete 熔断:源目录为空(或被 include/exclude 全部过滤)时拒绝执行删除并提示加
--force,--dry-run始终可用 - 参数写反提示:sync 参数顺序固定
<local> <remote>(与方向无关,不同于 put/get),写反时给出明确提示 - 诊断面:每次 sync 输出两端根目录统计(文件/目录数)与空树警告,
--delete前打印计划删除计数,--json新增 warnings,dry-run 汇总带(预演)标记 ls输出回显路径:打错路径回空列表不再无提示
0.5.2 新增:单服务器共享与免导入连接
xxssh export <名称>单服务器导出:把一台服务器导出为独立 JSON 文件(<名称>.xxssh.json),与 servers.json 列表完全分离,直接发给同事/搭档即可xxssh --file bt.xxssh.json指定文件连接:对方无需任何导入/保存,指定文件就能连(交互会话、--run、文件操作、put/get 全部支持)- 安全控制:默认包含 TXDEF 加密的密码;
--no-secret剔除密码/口令(对方连接时提示输入);误把 servers.json 列表当单服务器文件传给--file会被明确拒绝
xxssh export bt # -> bt.xxssh.json,发送给对方
xxssh --file bt.xxssh.json # 对方直接连接(无需导入)
xxssh --file bt.xxssh.json --run "uptime"
xxssh export bt --no-secret # 不含密码,对方连接时输入
xxssh
一个用 Rust 编写的 SSH 客户端,两种形态覆盖全部场景:交互式 TUI(多服务器管理 + 全功能终端)与面向脚本和 AI Agent 的完整命令行(0.5.0 全新)。服务器信息一次保存,所有命令直接按名称调用,自动化从此不必重复输入主机地址和密码。
0.5.1 新增(来自真实项目反馈)
--run-bg分离执行:远端启动服务/后台进程不再挂起会话(自动 nohup + 输入输出重定向),stdout 直接回显远端 PID,配合--bg-log <文件>落日志;可与--run交错编排(先起服务再健康检查)--run-json结构化报告:命令输出不再流式打印,而是输出{cmd, rc, out, err, pid, timed_out}JSON 数组;超时也保留部分结果- 无终端保护:CI/管道中误用交互模式时给出明确指引(exit 2),不再表现异常
xxssh --profile prod --run-bg "./char -server -dir=/srv/app" --bg-log /srv/app.log # 回显 PID,立即返回
xxssh --profile prod --run "ps -p <PID>" # 存活确认
xxssh --profile prod --run "uname -a" --run-json | jq -r '.results[0].out' # 结构化输出
0.5.0 新增:命令行自动化与 AI Agent 完整支持
远程命令执行
xxssh --run "ls -al" --profile bt # 按名使用已存服务器
xxssh --run "cd /app && make" --profile bt # 单命令内可任意组合
xxssh --runfile deploy.txt --profile bt # 逐行执行文件中的命令
xxssh --run "sleep 99" --cmd-timeout 5 --profile bt # 超时保护(退出码 124)
- 退出码透传(脚本 / Agent 可直接判断)、stdout 与 stderr 分离、
--timeout连接超时
13 个结构化文件操作(加 --json 输出机器可读结果)
xxssh --profile bt ls /var/log -r --json # 递归列表 -> [{path,type,size,mtime},...]
xxssh --profile bt stat /etc/hosts # 类型/大小/权限/时间/属主
xxssh --profile bt exists /opt/app/app # 存在性检查(退出码 0/1 可直接 && 判断)
xxssh --profile bt mkdir /opt/app/conf # mkdir -p 语义
xxssh --profile bt touch /opt/app/f.ini # 已存在文件绝不截断
xxssh --profile bt cp /src /dst -r # 远端复制
xxssh --profile bt mv /a /b # 移动 / rename 改名
xxssh --profile bt rm /old -r # 删除(目录必须 -r)
xxssh --profile bt chmod 644 /opt/app.conf
xxssh --profile bt ln /releases/r2 /current # 符号链接(部署切换)
xxssh --profile bt du /var/log # 目录树统计
xxssh --profile bt df / # 磁盘空间
文件传输增强
xxssh put app.tar.gz bt:/opt/app.tar.gz --atomic # 原子上传(临时名+改名+校验)
xxssh --profile bt get /etc/nginx/nginx.conf ./ # 下载
- 上传 / 下载自动保留修改时间、scp 式目录语义、覆盖确认策略
目录同步 sync(增量、双向、安全)
xxssh --profile prod sync ./site /var/www/site --exclude ".git/**" --delete
xxssh --profile prod sync ./site /var/www/site --dry-run # 先预演
xxssh --profile prod sync /var/data ./backup -d pull # 备份拉取
xxssh --profile dev sync ./notes /srv/notes -d both --conflict newer
- 增量规则:大小相同且 mtime ±1 秒内跳过;
--delete永不触碰被排除 / 非受管文件 - 冲突策略 fail / newer / local / remote;rsync 风格 include/exclude 通配
AI Agent 专项设计
--password/--passphrase命令行直传,配合 HEX_ 十六进制编码彻底规避各种 shell 的引号 / 转义 / 乱码问题(密码、命令、路径均可用)- 多级帮助系统:
--help agents快速上手、--help run|files|transfer|sync|security|shells|json深度文档、--help all一次性完整输出(语法 / 参数 / 退出码 / JSON schema / 错误含义 / 全组合示例) - 退出码契约:0 成功 / 1 失败 / 2 用法错误 / 124 超时;stdout 只输出数据(JSON / 命令输出),状态信息走 stderr
--known-hosts严格主机指纹校验 /--known-hosts-add首次信任(TOFU),防中间人
Shell 兼容提示:以上示例在 PowerShell / cmd 下原样可用。Git Bash (MSYS) 会把以 / 开头的参数改写成本地 Windows 路径(加引号也无法避免),请改用双斜杠写法 xxssh --profile bt ls //var/log,或在命令前加 MSYS_NO_PATHCONV=1;路径也支持 HEX_ 十六进制编码。详见 xxssh --help shells。
TUI 交互模式(原有全部特性)
- 多服务器管理:新建 / 编辑 / 保存 / 删除(JSON 持久化,密码 TXDEF 加密落盘)
- 全功能终端:PTY shell,ANSI 颜色与控制序列完整透传(vim / top / htop 正常)
- 客户端保活:每 20s 心跳、3 次无响应才判死 -- 跨过 NAT / 防火墙空闲超时
- 窗口尺寸同步、
~.强制断开、密码 / 公钥认证(含加密私钥、keyboard-interactive 回退) - SFTP 双栏浏览器:TUI 中按
F本地 / 远程可视化浏览与传输 - SOCKS5 代理:服务器单独设置 > 命令行
-x> 全局开关 - 自更新:
xxssh --update一键升级,带 sha256 校验
Windows GUI 版(xxsshg)
偏好图形界面?xxsshg 提供多标签 GUI 终端、本地 CMD/PowerShell、服务器管理表单,与 xxssh 完全共用 ~/.xxssh 配置——在本卡片“Windows GUI”平台下载,独立版本号(当前 0.8.7)。
一键安装
# Linux / macOS
curl -fsSL https://magicdo.top/install/xxssh.sh | bash
# Windows (PowerShell)
irm https://magicdo.top/install/xxssh.ps1 | iex
快速开始
xxssh # 启动 TUI 服务器管理界面
xxssh my-server # 交互式连接已存服务器
xxssh root@1.2.3.4 -p 2222 -i ~/.ssh/id_rsa # 直连(不保存)
xxssh --run "uptime" --profile web # 自动化:一条命令拿结果
xxssh --help agents # AI Agent 专用上手文档
TUI 按键:N 新建 / E 编辑 / Enter 连接 / D 删除 / S 设置 / F 传输 / Q 退出
配置文件
| 平台 | 路径 |
|------|------|
| Windows | C:\Users\<user>\.xxssh\servers.json |
| Linux / macOS | ~/.xxssh/servers.json |
环境变量 XXSSH_CONFIG 可覆盖路径;Unix 下权限 0600,密码加密存储。
跨平台二进制
| 平台 | 文件 |
|------|------|
| Windows x64 | xxssh.exe(静态 CRT,无外部 DLL) |
| Linux x64 | xxssh(musl 全静态,直接运行) |
| Linux ARM64 | xxssh(musl 全静态,aarch64 服务器/树莓派直接运行) |
| macOS | xxssh-universal(Intel + Apple Silicon) |
📦 下载
⚡ 一键安装
irm https://magicdo.top/install/xxssh.ps1 | iexcurl -fsSL https://magicdo.top/install/xxssh.sh | bashcurl -fsSL https://magicdo.top/install/xxssh.sh | bash