一个便捷的命令行工具,用于通过SCP协议将本地文件快速上传到远程服务器。
- 🚀 快速上传: 基于SSH2协议的高效文件传输
- 🔒 安全可靠: 支持密码和私钥认证,确保传输安全
- 📊 进度显示: 实时显示上传进度和传输速度
- 💾 配置管理: 保存常用服务器配置,支持快速选择
- 🔄 自动重试: 内置重试机制,提高传输成功率
- 🎨 友好界面: 美观的交互式命令行界面
- ⚡ 错误处理: 完善的错误处理和用户提示
# 克隆项目
git clone <repository-url>
cd upload-file-cli
# 安装依赖
npm install
# 全局安装(可选)
npm install -g .# 安装依赖后直接运行
npm start运行工具:
# 如果全局安装
scp-upload
# 或者直接运行
npm start本工具实现了与以下SCP命令相同的功能:
scp /Users/xxx/Downloads/.env root@xxx.xxx.xxx.xxx:/data/config/playground/.env启动工具后,您将看到以下选项:
- 📤 上传文件 - 开始文件上传流程
- ⚙️ 管理服务器配置 - 添加、编辑或删除服务器配置
- 📋 查看已保存的配置 - 列出所有保存的服务器配置
- ❌ 退出 - 退出程序
- 使用已保存配置: 如果您之前保存过服务器配置,可以直接选择使用
- 手动输入: 首次使用或需要连接新服务器时,手动输入连接信息
- 本地文件路径: 要上传的文件的完整路径
- 远程文件路径: 文件在服务器上的目标路径
- 密码认证: 输入SSH密码
- 私钥认证: 指定私钥文件路径
- 默认SSH密钥: 使用
~/.ssh/id_rsa默认密钥
- 选择 "⚙️ 管理服务器配置"
- 选择 "➕ 添加新配置"
- 输入以下信息:
- 配置名称(用于识别)
- 服务器IP地址
- 用户名
- SSH端口(默认22)
- 默认远程目录
- 私钥文件路径(可选)
- 查看配置: 列出所有保存的配置及其详细信息
- 删除配置: 删除不再需要的服务器配置
- 导出配置: 将配置导出到文件
- 导入配置: 从文件导入配置
配置文件存储在用户主目录下:
~/.scp-upload-cli/servers.json
配置文件格式:
{
"my-server": {
"host": "192.168.1.100",
"username": "root",
"port": 22,
"defaultRemotePath": "/data/uploads",
"privateKeyPath": "/Users/username/.ssh/id_rsa",
"createdAt": "2024-01-01T00:00:00.000Z",
"lastUsed": "2024-01-01T12:00:00.000Z"
}
}-
SSH密钥认证(推荐)
- 支持RSA、DSA、ECDSA、Ed25519密钥
- 自动检测默认SSH密钥
- 验证私钥文件权限
-
密码认证
- 密码不会保存到配置文件
- 支持密码输入隐藏
- 主机地址验证: 检查IP地址和域名格式
- 端口验证: 验证端口范围和常见服务端口警告
- 路径验证: 检查文件路径安全性
- 权限检查: 验证文件读取权限
- 私钥验证: 检查私钥文件格式和权限
- 实时上传进度百分比
- 传输速度显示
- 文件大小和已传输大小
- 预估剩余时间
- 自动重试机制(最多3次)
- 详细的错误信息提示
- 网络中断恢复
- 文件权限检查
- 彩色输出和图标
- 清晰的操作提示
- 配置记忆功能
- 最近使用配置优先显示
❌ 连接服务器失败: connect ECONNREFUSED
解决方案:
- 检查服务器IP地址和端口是否正确
- 确认服务器SSH服务正在运行
- 检查网络连接和防火墙设置
❌ 认证失败: All configured authentication methods failed
解决方案:
- 检查用户名和密码是否正确
- 确认私钥文件路径和权限
- 验证服务器是否允许该用户登录
❌ 没有读取文件的权限
解决方案:
- 检查本地文件的读取权限
- 使用
chmod 644 filename修改文件权限 - 确认当前用户有访问文件的权限
❌ 创建远程目录失败
解决方案:
- 确认远程路径正确
- 检查远程用户是否有创建目录的权限
- 手动在服务器上创建目标目录
如需更详细的错误信息,可以查看终端输出的完整错误堆栈。
- Node.js: 运行环境
- SSH2: SSH连接和SFTP传输
- Inquirer: 交互式命令行界面
- Chalk: 彩色终端输出
- Ora: 加载动画和进度显示
- fs-extra: 增强的文件系统操作
upload-file-cli/
├── bin/
│ └── cli.js # 主程序入口
├── lib/
│ ├── scp-uploader.js # SCP上传核心模块
│ ├── config-manager.js # 配置管理模块
│ └── validator.js # 验证器模块
├── package.json # 项目配置
├── README.md # 说明文档
└── .gitignore # Git忽略文件
ssh2: SSH2协议实现,用于建立安全连接inquirer: 提供交互式命令行界面chalk: 终端文本着色ora: 终端加载动画fs-extra: 文件系统操作增强commander: 命令行参数解析
欢迎提交Issue和Pull Request来改进这个工具!
# 克隆项目
git clone <repository-url>
cd upload-file-cli
# 安装依赖
npm install
# 运行开发版本
npm startMIT License
如果您遇到问题或有功能建议,请:
- 查看本文档的故障排除部分
- 在GitHub上提交Issue
- 发送邮件至开发者邮箱
享受快速、安全的文件上传体验! 🚀