scp-next v1.0.19 项目介绍: 面向 Node.js 开发者的 SSH 文件传输工具

简介: 介绍 scp-next v1.0.19 的 npm 安装、CLI 上传下载、配置文件、凭据安全、库 API 和新人使用流程。

前言

scp-next 是一个 SCP 风格的 npm 包。他同时提供命令行工具和库,用于通过 SSH 安全传输文件。虽然包名包含 SCP,实际使用 SFTP,不会为普通传输执行远程 Shell 命令。

适合谁使用

如果你需要在部署脚本、CI 流程或 Node.js 应用中传输文件,scp-next 可以减少重复封装。常见场景如下:

  • 将本地构建产物上传到服务器。
  • 从服务器下载日志或产物。
  • 用配置文件管理不同服务器环境。
  • 在应用代码中复用同一个传输客户端。

安装方式

全局安装后,可以直接使用 scp-next 命令。

npm install --global scp-next

作为项目依赖安装后,可以在 Node.js 代码中导入 API。

npm install scp-next

如果一个项目只在脚本里调用命令行工具,也可以把他安装到项目依赖中,再通过 npx scp-next 或 npm scripts 调用。

先理解传输方向

命令行统一使用 <source> <destination> 两个位置参数。

scp-next upload <source> <destination> [options]
scp-next download <source> <destination> [options]
scp-next run <job> [source] [destination] [options]

方向规则如下:

Operation Source Destination
Upload Local Remote
Download Remote Local

命令行快速开始

上传本地目录到远程服务器。

scp-next upload ./dist /var/www/example \
  --host your-host \
  --username your-username \
  --password your-password \
  --recursive

下载远程文件到本地目录。如果目标目录不存在,scp-next 默认会创建目录。这符合日常 cpscp 风格的使用习惯。可以用 --no-create-directories 关闭该行为。

scp-next download /var/log/example.log ./logs/example.log \
  --host your-host \
  --username your-username \
  --password your-password

先预览上传计划,而不连接服务器。--dry-run 会解析配置并检查本地路径。他不会连接远程服务器,也不会修改本地或远程文件。

scp-next upload ./dist /var/www/example \
  --host your-host \
  --username your-username \
  --password your-password \
  --recursive \
  --dry-run

推荐的凭据写法

命令行密码参数适合本地快速试用。

scp-next upload ./dist /var/www/example \
  --host your-host \
  --username your-username \
  --password your-password \
  --recursive

共享环境和生产环境建议使用环境变量。这样可以降低密码进入 Shell 历史记录或进程列表的风险。

export SCP_NEXT_HOST="your-host"
export SCP_NEXT_USERNAME="your-username"
export SCP_NEXT_PASSWORD="your-password"

scp-next upload ./dist /var/www/example --recursive

也可以使用受保护的私钥文件。

scp-next upload ./dist /var/www/example \
  --host your-host \
  --username your-username \
  --private-key-file ~/.ssh/id_ed25519 \
  --recursive

常用命令选项

选项 作用
--host <host> SSH 服务器地址。
--port <port> SSH 服务器端口,默认值为 22
--username <username> SSH 用户名。
--password <password> SSH 密码。
--private-key-file <privateKeyFile> 私钥文件路径,支持 ~
--passphrase <passphrase> 加密私钥的口令。
--config <path> 指定配置文件路径。
--profile <name> 选择配置文件中的服务器配置。
--recursive 递归传输目录,默认关闭。
--overwrite 允许覆盖已有目标文件。
--create-directories 创建缺失的目标目录,默认开启。
--no-create-directories 关闭目标目录自动创建。
--dry-run 只解析和验证,不执行传输。
--timeout <milliseconds> SSH 握手超时时间,单位为毫秒。
--quiet 关闭进度和非错误输出。
--verbose 输出不含敏感信息的诊断内容。

配置文件用法

CLI 会自动查找以下配置文件。

scp-next.config.json
.scp-nextrc
.scp-nextrc.json

也可以显式指定路径。

scp-next upload ./dist /var/www/example \
  --config ./scp-next.config.json \
  --profile production

下面是一个包含服务器配置和任务的示例。

{
   
  "profiles": {
   
    "production": {
   
      "host": "your-host",
      "username": "your-username",
      "privateKeyFile": "~/.ssh/id_ed25519"
    }
  },
  "jobs": {
   
    "deploy": {
   
      "operation": "upload",
      "profile": "production",
      "source": "./dist",
      "destination": "/var/www/example",
      "recursive": true,
      "overwrite": true
    },
    "download-logs": {
   
      "operation": "download",
      "profile": "production",
      "source": "/var/log/example",
      "destination": "./logs",
      "recursive": true
    }
  }
}

运行配置好的上传任务。

scp-next run deploy

运行配置好的下载任务。

scp-next run download-logs

run 命令也支持临时覆盖路径。

scp-next run deploy ./dist-canary /var/www/canary

配置优先级从高到低如下。

  1. 显式 CLI 选项
  2. 位置参数
  3. 环境变量
  4. 选中的配置 profile
  5. 根级配置值
  6. 配置的 job 值
  7. 内部默认值

不要把包含真实密码的配置文件提交到 Public 仓库。共享仓库和部署环境应优先使用 SCP_NEXT_PASSWORD 或受保护的密钥文件。

库 API 用法

ESM 项目可以直接导入 upload

import {
    upload } from "scp-next";

await upload({
   
  host: process.env.SCP_NEXT_HOST,
  username: process.env.SCP_NEXT_USERNAME,
  password: process.env.SCP_NEXT_PASSWORD,
  localPath: "./dist",
  remotePath: "/var/www/example",
  recursive: true,
  overwrite: true
});

CommonJS 项目可以使用 require

const {
    download } = require("scp-next");

async function main() {
   
  await download({
   
    host: process.env.SCP_NEXT_HOST,
    username: process.env.SCP_NEXT_USERNAME,
    password: process.env.SCP_NEXT_PASSWORD,
    remotePath: "/var/log/example.log",
    localPath: "./logs/example.log"
  });
}

main().catch((error) => {
   
  console.error(error.message);
  process.exitCode = 1;
});

如果一次连接内要执行多个操作,可以创建可复用客户端。

import {
    createClient } from "scp-next";

const client = createClient({
   
  host: process.env.SCP_NEXT_HOST,
  username: process.env.SCP_NEXT_USERNAME,
  password: process.env.SCP_NEXT_PASSWORD
});

try {
   
  await client.connect();
  await client.upload("./dist", "/var/www/example", {
    recursive: true });
  await client.download("/var/log/example.log", "./logs/example.log");
} finally {
   
  await client.close();
}

主要导出如下。

upload(options);
download(options);
createClient(options);
copy(options);

错误类型包含稳定的 code、可读的 message 和经过脱敏的上下文。常见错误包括 ConfigurationErrorAuthenticationErrorConnectionErrorTransferErrorHostVerificationError

主机验证

scp-next 支持通过 hostFingerprintknownHostsFile 验证主机。如果没有显式配置,他会读取 ~/.ssh/known_hosts

在 CI 或部署环境中,如果没有可用的 known-hosts 文件,建议配置 hostFingerprint。如果无法建立主机验证,scp-next 会失败退出。

新人接手清单

接手项目时,可以按以下顺序验证。

  1. 确认 Node.js 版本不低于 18.18.0。
  2. 使用 npm install --global scp-next 安装 CLI。
  3. scp-next upload ... --dry-run 验证参数和路径。

掌握这几项后,就可以把 scp-next 用于日常部署脚本、日志下载任务和 Node.js 文件传输流程。

版权声明

本文为原创文章,作者保留版权。转载请保留本文完整内容,并以超链接形式注明作者及原文出处。

作者: 除除
原文: https://blog.mazey.net/6454.html

(完)

目录
相关文章
|
5月前
|
人工智能 机器人 Linux
阿里云轻量服务器部署OpenClaw|钉钉接入+千问/Coding Plan API配置+避坑指南
2026年,OpenClaw(原Clawdbot)凭借轻量化部署、多平台兼容与大模型深度集成能力,成为企业与个人搭建专属AI自动化代理的首选工具。依托阿里云轻量服务器的稳定运行与公网访问能力,搭配钉钉的企业级通信生态,可快速实现“云端AI服务+钉钉消息交互+大模型智能响应”的办公自动化闭环。本文基于2026年OpenClaw最新稳定版(v2026.3.28),完整覆盖**阿里云轻量服务器部署、本地MacOS/Linux/Windows11部署、钉钉接入全流程、阿里云千问大模型API配置、Coding Plan免费API配置、核心避坑指南、常见问题解答**七大核心模块,所有代码命令可直接复制执行
849 4
|
25天前
|
存储 运维 数据可视化
2026企业内部智能体搭建全流程指南 落地实施与架构选型解析
本文系统阐述企业内部智能体搭建的完整方法论:强调前置规划(业务拆解、架构选型、合规划定),详解四大核心能力(私有知识库、系统联动、工作流编排、全域管控),并针对中小企、中大型企业、高合规集团,提供低代码SaaS、混合部署、全栈自研三类落地路径及行业实践案例。(239字)
|
6月前
|
传感器 机器学习/深度学习 算法
PID期刊论文复现之基于Simulink四旋翼无人机PID控制
PID期刊论文复现之基于Simulink四旋翼无人机PID控制
355 1
|
人工智能 安全 文件存储
NAS部署Hermes AI Agent + 零讯内网穿透,实现远程可管理的AI助手
本文教你用飞牛NAS一键部署Hermes AI Agent(支持多工具、长期运行)+ Web管理界面+ZeroNews内网穿透,无需公网IP、不暴露NAS,仅映射6060端口,即可通过HTTPS域名远程安全访问Agent控制台,实现出差、地铁等场景下随时随地调试、监控与管理。
NAS部署Hermes AI Agent + 零讯内网穿透,实现远程可管理的AI助手
|
2月前
|
机器学习/深度学习 编解码 算法
PyTorch深度学习实战 |手算​​U-net
本文详细解析了U-Net网络架构及其在医学图像分割中的应用。重点对比了U-Net与FCN的核心区别:U-Net采用特征拼接(Concat)保留所有层级信息,而FCN使用特征相加(Add)进行融合。文章深入剖析了U-Net的编码器-瓶颈-解码器结构,解释了其独特的裁剪拼接机制和Overlap-tile策略,并提供了完整的PyTorch实现代码。现代U-Net通过SamePadding实现了输入输出尺寸一致,显著提升了分割精度。文章还探讨了弹性形变数据增强和带空间权重的损失函数设计,为医学图像分析提供了实用解决
247 2
|
2月前
|
数据采集 Web App开发 JavaScript
房源信息采集:链家/贝壳等房产网站的反爬策略应对方案
本文详解链家/贝壳房产数据采集的反爬困境与实战方案:针对IP封禁、滑块验证、JS动态渲染及“幽灵房”假数据等难题,提出OpenClaw驱动真实浏览器+站大爷高匿隧道代理+请求频率与指纹伪装三重防护策略,兼顾稳定性与合规性。(239字)
455 0
|
4月前
|
机器学习/深度学习 人工智能 图形学
🦞快在轻量化服务器上部署你的视觉龙虾吧——支持视觉识别到3D打印
彭博士打造的“视觉龙虾”系统,融合多视角3D重建、点云深度学习与参数化建模,支持手机拍照或自然语言输入,秒级生成可3D打印的STL模型。依托OpenClaw智能编排与阿里云轻量化部署,真正实现“想法→照片/文字→3D模型→实物”的端到端闭环,让3D打印零门槛。(239字)
767 9
🦞快在轻量化服务器上部署你的视觉龙虾吧——支持视觉识别到3D打印
|
3月前
|
数据采集 人工智能 机器人
3类可回收垃圾金属、纸张、塑料检测数据集(2800张)|YOLO训练数据集 智能垃圾分类 环保回收识别 视觉检测
本数据集含2800张真实场景图像,精准标注金属、纸张、塑料三类可回收垃圾,采用标准YOLO格式,适配YOLOv5/v8/v11、RT-DETR等主流模型,覆盖多光照、多角度、遮挡及复杂背景,开箱即用,助力智能垃圾分类、环保机器人与智慧环卫项目快速落地。
|
5月前
|
弹性计算 安全 Linux
OpenClaw(Clawdbot)从0到1落地:阿里云ECS部署、本地系统搭建与大模型API配置手册
2026年,OpenClaw(曾用名Clawdbot、Moltbot,社区昵称“小龙虾”)凭借“本地优先+强执行+多渠道接入”的核心优势,已成为AI智能体领域的标杆工具。它不仅能实现自然语言对话,更能通过大模型驱动完成文件操作、终端命令执行、API调用、多步骤任务编排等复杂操作,彻底打通“指令→规划→执行”全链路。
523 11
|
5月前
|
SQL 存储 安全
别等漏洞被挖才补救!Java 代码安全审计全链路实战指南
本文系统阐述Java代码安全审计的核心规范与实操体系,涵盖输入输出、数据安全、权限认证等6大规范维度,深度解析SQL注入、XSS、反序列化等高危漏洞的底层逻辑与修复方案,并提供全流程审计方法论及CI/CD自动化集成实践。
587 1