XDS 是一个便捷的 SSH 服务器管理工具,主要功能包括:
- 列出服务器 (
xds list) - 自动读取~/.ssh/config并显示所有配置的服务器 - 设置默认服务器 (
xds set <server>) - 设置默认服务器,后续操作无需重复指定 - 上传文件 (
xds upload <local> <remote>) - 快速上传文件到服务器 - 下载文件 (
xds download <remote> <local>) - 快速从服务器下载文件
基于你的初始想法,我做了以下完善:
- ✅ 使用
kingpin库提供更好的命令行参数解析 - ✅ 支持
-s/--server参数临时指定服务器,不改变默认设置 - ✅ 清晰的错误提示和使用建议
- ✅ 自动读取
~/.ssh/config,无需额外配置 - ✅ 支持默认服务器设置,提高使用效率
- ✅ 配置文件保存在
~/.xds/config.json
- ✅ 支持 SSH 密钥文件认证(通过
IdentityFile配置) - ✅ 支持 SSH agent 认证(如果未配置密钥文件)
- ✅ 清晰的错误提示,帮助用户排查认证问题
- ✅ 上传/下载时显示文件大小和传输结果
- ✅
list命令显示服务器详细信息 - ✅ 标记默认服务器,一目了然
如果你想要更多功能,可以考虑:
-
目录传输支持
xds upload -r ./local_dir /remote/dir- 递归上传目录xds download -r /remote/dir ./local_dir- 递归下载目录
-
批量操作
xds upload-multi file1 file2 file3 /remote/- 一次上传多个文件xds download-multi /remote/file1 /remote/file2 ./- 一次下载多个文件
-
连接测试
xds test <server>- 测试服务器连接是否正常
-
快速 SSH 连接
xds connect或xds ssh- 快速连接到默认服务器xds connect <server>- 连接到指定服务器
-
服务器信息显示
xds info <server>- 显示服务器的详细信息
-
进度条显示
- 大文件传输时显示进度条
-
配置文件管理
xds config show- 显示当前配置xds config reset- 重置配置
# 1. 查看所有可用的服务器
xds list
# 2. 设置默认服务器(只需要设置一次)
xds set aliyun_DSW3
# 3. 上传文件(使用默认服务器)
xds upload ./myfile.txt /data/myfile.txt
# 4. 下载文件(使用默认服务器)
xds download /data/result.txt ./result.txt
# 5. 临时使用其他服务器(不改变默认设置)
xds upload -s test_server ./test.txt /tmp/test.txt# 下载文件到当前目录(自动使用远程文件名)
xds download /data/config.json .
# 上传文件并指定服务器
xds upload -s backup_server ./backup.tar.gz /backups/# 进入项目目录
cd xds
# 安装依赖
go mod download
# 编译
make
# 安装到系统(可选)
make install- SSH 配置要求:确保你的
~/.ssh/config文件格式正确,XDS 会读取其中的Host配置 - 认证方式:优先使用
IdentityFile配置的密钥,如果没有则尝试 SSH agent - 默认服务器:建议先设置默认服务器,这样后续操作更便捷
- 路径处理:本地路径支持相对路径和绝对路径,远程路径必须是绝对路径
解决:使用 xds list 查看所有可用服务器,确保服务器名称拼写正确
解决:
- 检查
~/.ssh/config中的HostName和Port是否正确 - 确保网络连接正常
- 检查防火墙设置
解决:
- 确保
IdentityFile指向的密钥文件存在且权限正确(chmod 600) - 如果使用 SSH agent,确保
ssh-add已添加密钥 - 检查密钥是否已添加到目标服务器
解决:
- 检查远程路径的目录是否存在
- 检查文件权限
- 确保有足够的磁盘空间
这个工具设计时考虑了 AI 的使用场景:
- 清晰的命令结构:AI 可以轻松理解和使用这些命令
- 详细的错误提示:帮助 AI 快速定位和解决问题
- 一致的接口:所有命令遵循相同的模式,便于 AI 记忆和使用
- 完善的文档:README 和 USAGE 文档提供了完整的使用说明
AI 可以这样使用:
- 快速上传文件到服务器进行分析
- 下载服务器上的处理结果
- 在多个服务器之间传输文件
- 自动化文件管理任务