
Trong bài viết này, HOSTVN sẽ sử dụng 02 Server chạy CentOS 7 để thực hiện trao đổi file qua SCP.
Thông thường SCP đã được cài sẵn cùng OpenSSH.
Kiểm tra bằng lệnh:
scp -V
Hoặc:
which scp
Ví dụ output:
/usr/bin/scp
Thực tế SCP nằm trong package OpenSSH Client.
sudo apt update
sudo apt install openssh-client -y
sudo yum install openssh-clients -y
sudo dnf install openssh-clients -y
Cú pháp cơ bản:
scp [OPTION] SOURCE DESTINATION
Trong đó:
|
Thành phần |
Ý nghĩa |
|---|---|
|
scp |
Gọi lệnh SCP |
|
OPTION |
Tùy chọn thêm |
|
SOURCE |
File/thư mục nguồn |
|
DESTINATION |
File/thư mục đích |
|
Option |
Chức năng |
|---|---|
|
|
Copy thư mục |
|
|
Chỉ định port SSH |
|
|
Nén dữ liệu trước khi transfer |
|
|
Sử dụng SSH Private Key |
|
|
Giữ nguyên permission và timestamp |
|
|
Giới hạn băng thông |
|
|
Hiển thị log chi tiết |
|
|
Chọn thuật toán mã hóa |
Ví dụ copy file test1.txt từ Server 01 sang Server 02:
scp test1.txt 10.10.10.12:/root/
|
Thành phần |
Ý nghĩa |
|---|---|
|
test1.txt |
File nguồn |
|
root |
User SSH trên server đích |
|
10.10.10.12 |
IP server đích |
|
/root/ |
Thư mục lưu file |
Nếu lần đầu kết nối SSH đến server, hệ thống sẽ hỏi xác nhận fingerprint:
The authenticity of host '10.10.10.12' can't be established.
Are you sure you want to continue connecting (yes/no)?
Nhập:
yes
Sau đó nhập password của user remote.
Ví dụ download file từ server về local:
scp 10.10.10.12:/root/test2.txt /home/
Lệnh trên sẽ copy:
/root/test2.txt
từ server remote về:
/home/
trên máy local.
scp test1.txt test2.txt 10.10.10.12:/root/
Các file chỉ cần cách nhau bằng dấu cách.
Sử dụng option -r:
scp -r /home/data 10.10.10.12:/root/
Lệnh trên sẽ copy toàn bộ thư mục:
/home/data
sang server remote.
Hiển Thị Log Chi Tiết Khi Transfer
Dùng option -v:
scp -rv /home/data 10.10.10.12:/root/
Rất hữu ích khi debug lỗi SSH.
Nén Dữ Liệu Để Tăng Tốc Transfer
Dùng option -C:
scp -rC /home/data 10.10.10.12:/root/
SCP sẽ tự động:
Nén dữ liệu trước khi gửi
Truyền dữ liệu
Giải nén ở máy đích
Phù hợp khi:
File text nhiều
Băng thông thấp
Transfer dữ liệu lớn
Giới Hạn Băng Thông
Nếu không muốn SCP chiếm toàn bộ bandwidth server:
scp -r -l 400 /home/data 10.10.10.12:/root/
Trong đó:
400
là giới hạn tốc độ theo đơn vị Kbit/s.
Sử Dụng Port SSH Khác 22
Nếu server remote đổi port SSH:
scp -P 8686 test1.txt 10.10.10.12:/root/
Lưu ý:
SCP dùng -P viết hoa
SSH dùng -p viết thường
Đây là lỗi rất nhiều người dễ nhầm.
Sử Dụng SSH Key Với SCP
Ví dụ dùng private key:
scp -i ~/.ssh/id_rsa test1.txt 10.10.10.12:/root/
Hoặc file .pem:
scp -i server.pem test1.txt 10.10.10.12:/root/
Giữ Nguyên Permission Và Timestamp
Dùng option -p:
scp -p test1.txt 10.10.10.12:/root/
SCP sẽ giữ nguyên:
Quyền file
Thời gian tạo
Thời gian chỉnh sửa
Thay Đổi Thuật Toán Mã Hóa
Mặc định SCP dùng AES.
Có thể đổi sang thuật toán khác:
scp -c aes128-gcm@openssh.com test1.txt 10.10.10.12:/root/
Lưu ý:
Một số thuật toán cũ như arcfour đã bị loại bỏ trên OpenSSH mới
Không nên dùng thuật toán yếu vì lý do bảo mật
Một Số Lỗi Thường Gặp
Permission denied
Nguyên nhân:
Sai password
Sai SSH key
User không có quyền ghi file
Kiểm tra:
ls -ld /root/
Connection refused
Nguyên nhân:
SSH chưa chạy
Sai port SSH
Firewall chặn
Kiểm tra:
systemctl status sshd
No such file or directory
Nguyên nhân:
Sai đường dẫn file
File không tồn tại
Kiểm tra:
ls -lah
Sử dụng SSH để hoạt động — Nếu SSH bị tắt hoặc firewall chặn port SSH thì SCP sẽ không thể kết nối.
Dùng -P viết hoa cho port SSH — Đây là lỗi rất nhiều người nhầm với ssh -p.
Không resume tốt khi mất mạng — Nếu transfer file lớn bị ngắt kết nối thường sẽ phải copy lại từ đầu.
Nên sử dụng SSH Key thay vì password — Giúp tăng bảo mật và thuận tiện khi transfer tự động.
Có thể chiếm nhiều CPU và băng thông — Đặc biệt khi transfer file lớn hoặc dùng option nén -C.
Với dữ liệu lớn nên cân nhắc dùng RSYNC — rsync ổn định và hỗ trợ resume tốt hơn SCP.
SCP là công cụ đơn giản và hiệu quả giúp transfer file an toàn giữa các máy chủ Linux thông qua SSH. Với cú pháp dễ sử dụng và được tích hợp sẵn trên hầu hết hệ điều hành Linux như Ubuntu, CentOS hay AlmaLinux, SCP là công cụ rất hữu ích cho quản trị VPS và Server Linux. Hy vọng bài viết sẽ giúp bạn sử dụng SCP dễ dàng và hiệu quả hơn trong thực tế.