Lệnh SCP – Sao chép từ xa giữa các máy tính

Lệnh SCP - Sao chép từ xa giữa các máy tính

SCP (Secure Copy) là công cụ dòng lệnh trong các hệ thống Linux và Unix. Nó được sử dụng để sao chép từ xa gữa các máy tính. Nó giúp chuyển các tệp và thư mục qua hệ thống một cách an toàn qua mạng. Khi sử dụng lệnh scp để sao chép các tệp và thư mục từ hệ thống cục bộ đến hệ thống từ xa thì trong phần phụ trợ, nó thực hiện kết nối ssh với hệ thống từ xa. Nói cách khác, có thể nói scp sử dụng cùng một cơ chế bảo mật SSH trong phần phụ trợ, nó sử dụng mật khẩu hoặc khóa để xác thực.

Trong hướng dẫn này, chúng ta sẽ thảo luận về lệnh scp trong linux với các ví dụ thực tế.

Lệnh scp có tác dụng gì?

  • SCP (Secure Copy – Sao chép an toàn) là một ứng dụng sử dụng SSH để mã hóa toàn bộ quá trình chuyển tập tin.
  • SCP là lệnh dùng để di chuyển file dữ liệu giữa các máy tính chạy hệ điều hành Linux từ xa chỉ cần biết địa chỉ ip
  • SCP dùng ssh để di chuyển dữ liệu, có chế độ bảo mật giống như ssh.

Cài đặt công cụ SCP trên Linux

Thông thường công cụ lệnh sao chép từ xa gữa các máy tính SCP được cài sẵn trên Linux, nếu chưa có thì ta tiến hành cài đặt.

CentOS 6,7:

Trên CentOS 8:

Ubuntu/Debian

Cú pháp của lệnh scp:

Copy từ máy cục bộ đến một máy từ xa:

Copy ở máy từ xa về máy cục bộ:

Một số tùy chọn <options> được sử dụng rộng rãi nhất trong lệnh scp được liệt kê bên dưới:

-C      Enable Compression (cho phép nén dữ liệu)

-i       identity File or private key (Tệp nhận dạng hoặc khóa mã)

-l       limit the bandwidth while copying (giới hạn băng thông trong khi sao chép, hạn chế ảnh hưởng các tiến trình khác cần băng thông để hoạt động)

-P          ssh port number of target host (chỉ định cổng server đích)

-p          Preserves permissions, modes and access time of files while copying (Bảo toàn các thông tin như: quyền, chế độ và thời gian truy cập tệp trong khi sao chép)

-q          Suppress warning message of SSH (Loại bỏ các thông báo dạng cảnh báo của SSH)

-r          Copy files and directories recursively (Sao chép đệ quy các tệp và thư mục)

-v          verbose output ( xuất ra nhiều thông tin hơn về những gì chương trình scp đang thực thi ở chế độ nền background – Hữu dụng khi gỡ lỗi sao chép)

Các tùy chọn nếu không có tham số theo sau thì có thể viết gộp cho gọn. Chẳng hạn thay vì viết một loạt tùy chọn: -r -p -v -C ta có thể gộp chúng lại: -Crpv

Các ví dụ sử dụng lệnh scp:

1. Sao chép 1 tập tin từ máy cục bộ sang máy từ xa:

Lệnh trên sử dụng tài khoản root để copy tập tin text1.txt từ thư mục /home trên máy cục bộ đến thư mục /usr trên máy từ xa (máy đích có địa chỉ ip là 10.0.0.31). hệ thống yêu cầu bạn nhập mật khẩu của tài khoản root trên máy từ xa để chứng thực như dưới đây.
Nếu là lần đầu tiên thiết lập kết nối đến máy từ xa hệ thống sẽ hỏi xác thực. Bạn trả lời yes là được.

The authenticity of host ‘10.0.0.31 (10.0.0.31)’ can’t be established.

ECDSA key fingerprint is SHA256:hSFEZCsTfkFLpblGSL7CpI8SJ/RkLxQNcYLV9dXyw0Y.

Are you sure you want to continue connecting (yes/no/[fingerprint])?

Sao chép một tệp từ máy windows sang máy linux:

scp sao chép file windows sang linux

2. Sao chép một tệp trên máy từ xa về máy cục bộ

Giả sử chúng ta muốn sao chép một tệp từ hệ thống từ xa sang hệ thống cục bộ của chúng ta và đặt vào thư mục /tmp, hãy thực hiện lệnh scp sau:

Kết quả:

3. Chuyển nhiều tệp sang hệ thống từ xa

Cú pháp chung có dạng:

Nhiều tệp có thể được sao chép / chuyển đến hệ thống từ xa bằng lệnh scp trong một lần. các tệp được phân tách nhau bằng dấu cách:

4. Copy toàn bộ thư mục và file lên máy chủ remote

Để copy toàn bộ thư mục từ máy chủ này đến máy chủ khác ta thêm option ‘-r‘ để chỉ định sao chép đệ quy:

5. Copy giữa hai máy chủ từ xa

Bạn đang đứng trên máy chủ A, vẫn có thể thực hiện lệnh scp để copy file từ máy B sang máy C bằng lệnh có cú pháp như sau:

Lệnh này copy file.txt trên thư mục /dir ở host1 sang thư mục /dir ở host 2

6. Bật nén – Tăng tốc độ truyền file

Trong lệnh scp, chúng ta có thể tăng tốc độ truyền bằng cách cho phép nén bằng tùy chọn -C, nó sẽ tự động cho phép nén tại nguồn và giải nén tại máy chủ đích.

7. Giới hạn băng thông sử dụng khi truyền file

Sử dụng tùy chọn ‘-l’ trong lệnh scp để giới hạn việc sử dụng băng thông trong khi sao chép. Băng thông được chỉ định bằng Kbit/s, ví dụ được hiển thị bên dưới:

8. Chỉ định cổng ssh khác 22 trong khi scp (-P)

Cổng mặc định cho dịch vụ ssh trên các máy chủ là 22, tuy nhiên rất nhiều máy chủ vì lý do bảo mật hoặc trùng port đã thực hiện ssh trên các cổng khác với port 22 truyền thống. Tùy chọn -P sẽ cho phép bạn chỉ định thực hiện lệnh scp trên một port ssh cụ thể của máy chủ.

9. Bảo toàn quyền, chế độ và thời gian truy cập tệp trong khi sao chép (-p)

Sử dụng tùy chọn “-p” trong lệnh scp để bảo toàn quyền, thời gian truy cập và chế độ trong khi sao chép từ nguồn đến đích

10. Quiet mode – Bật chế độ im lặng, yên tĩnh

Sử dụng tùy chọn ‘-q’ trong lệnh scp để chặn tiến trình truyền, thông báo cảnh báo và chẩn đoán của ssh.

Không có thông báo nào khi thực hiện scp với -q

11. Sử dụng Nhận dạng tệp trong scp khi truyền (-i)

Trong trường hợp bạn sử dụng xác thực SSH bằng key, khi đó bạn sẽ cần chỉ định file chứa private key:

12. Sử dụng tệp ‘ssh_config’ khác (-F):

Bình thường lệnh scp sẽ sử dụng file ssh_config mặc định. Tuy nhiên có một số trường hợp bạn sử dụng các mạng khác nhau để kết nối với hệ thống Linux, có thể một số mạng nằm sau máy chủ proxy, vì vậy trong trường hợp đó chúng ta phải có tệp ssh_config khác.

Tệp ssh_config khác nhau trong lệnh scp được chỉ định thông qua tùy chọn ‘-F’

13. Sử dụng thuật toán mã hóa khác

Theo mặc định, scp sử dụng mật mã ‘AES-128’ để mã hóa các tệp. Nếu bạn muốn sử dụng một mật mã khác trong lệnh scp thì hãy sử dụng tùy chọn ‘-c’ theo sau là tên mật mã (blowfish, arcfour, 3des-cbc..). Bạn có thể muốn sử dụng một thuận toán khác để tăng tốc độ chuyển file chẳng hạn, ví dụ như thuật toán blowfish và arcfour thì nhanh hơn AES-128 nhưng bảo mật lại kém hơn, chỉ nên thực hiện trong hệ thống mạng nội bộ an toàn, kho đó bạn sẽ được đổi lại là tốc độ truyền file.

Giả sử chúng ta muốn sử dụng mật mã ‘3des-cbc’ trong lệnh scp trong khi chuyển tệp, hãy chạy lệnh scp sau

Sử dụng lệnh dưới đây để liệt kê các mật mã ssh và scp:

Bạn sẽ được kết quả:

14. Verbose Output – Thông tin chi tiết trong khi chuyển tệp

Trong lệnh scp, chúng ta có thể kích hoạt đầu ra chi tiết bằng cách sử dụng tùy chọn -v, sử dụng đầu ra chi tiết, chúng ta có thể dễ dàng tìm thấy chính xác những gì đang xảy ra khi scp đang chạy dưới chế độ nền (backgroud). Điều này rất hữu ích trong việc gỡ lỗi các vấn đề về kết nối, xác thực và cấu hình.

Kết luận

Lệnh scp – Sao chép từ xa giữa các máy tính là một lệnh rất hay dùng trong linux. SCP giúp bạn truyền dữ liệu được mã hóa trên đường truyền từ máy này qua máy kia. Bao nhiêu đó là tất cả từ hướng dẫn này, để biết thêm chi tiết về lệnh scp, vui lòng tham khảo trang người dùng của nó. Vui lòng chia sẻ phản hồi và nhận xét của bạn trong phần bình luận bên dưới. Chúc các bạn vui vẻ.

Cường còng