Skip to content

Bắt đầu ​

Trang này đưa bạn từ một dự án trống tới lần tải lên đầu tiên chỉ trong vài phút.

1. Cài đặt ​

sh
npm install node-scp
sh
pnpm add node-scp
sh
yarn add node-scp
sh
bun add node-scp

node-scp có sẵn type cho TypeScript và dùng được với cả import lẫn require.

2. Kết nối và sao chép ​

ts
import { readFileSync } from 'node:fs';
import { connect } from 'node-scp';

const client = await connect({
  host: 'example.com',
  username: 'deploy',
  privateKey: readFileSync('/home/me/.ssh/id_ed25519'),
});

try {
  await client.upload('./dist', '/var/www/app', { recursive: true });
  await client.download('/var/log/app.log', './logs/app.log');
  console.log(`copied over ${client.protocol}`); // 'sftp' hoặc 'scp'
} finally {
  await client.close();
}

Đoạn code trên làm những việc sau:

  1. connect() mở kết nối SSH, đăng nhập và chọn giữa SFTP và SCP.
  2. upload() sao chép thư mục dist trên máy bạn để /var/www/app trở thành bản sao của nó. Cần recursive: true để sao chép thư mục, giống scp -r.
  3. download() sao chép một tệp từ máy chủ về. Thư mục cục bộ còn thiếu (./logs) sẽ được tạo.
  4. close() đóng kết nối. Luôn đóng kết nối, nếu không process sẽ không thoát.

Để ngôn ngữ tự đóng kết nối giúp bạn

Với await using, kết nối được đóng ở cuối block, kể cả khi có lỗi xảy ra. Cú pháp này cần Node 24 trở lên, hoặc TypeScript 5.2 trở lên (TypeScript sẽ biên dịch nó cho các bản Node cũ hơn).

ts
await using client = await connect({ host, username, privateKey });
await client.upload('./dist', '/var/www/app', { recursive: true });
// kết nối được đóng tại đây

3. Đăng nhập theo cách máy chủ yêu cầu ​

Bạn cóTruyền vào connect()
Một tệp private keyprivateKey: readFileSync(path)
Private key có passphraseprivateKey và passphrase
ssh-agent đang chạyagent: process.env.SSH_AUTH_SOCK
Mật khẩupassword: process.env.SSH_PASSWORD

Đừng để thông tin bí mật nằm trong code: hãy đọc chúng từ tệp, biến môi trường hoặc kho lưu trữ secret. Trang Kết nối trình bày cách đăng nhập keyboard interactive, đi qua jump host và kiểm tra host key.

4. Hoặc không cần viết code ​

Cùng engine đó chạy được ngay trong terminal:

sh
npx node-scp -r ./dist deploy@example.com:/var/www/app

Xem Dòng lệnh, hoặc GitHub Action nếu bạn dùng CI.

Đọc tiếp ​

Phát hành theo giấy phép MIT.