
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 |
|---|---|
-r |
Copy thư mục |
-P |
Chỉ định port SSH |
-C |
Nén dữ liệu trước khi transfer |
-i |
Sử dụng SSH Private Key |
-p |
Giữ nguyên permission và timestamp |
-l |
Giới hạn băng thông |
-v |
Hiển thị log chi tiết |
-c |
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.
Dùng option -v:
scp -rv /home/data 10.10.10.12:/root/
Rất hữu ích khi debug lỗi SSH.
Dùng option -C:
scp -rC /home/data 10.10.10.12:/root/
SCP sẽ tự động:
Phù hợp khi:
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.
Nếu server remote đổi port SSH:
scp -P 8686 test1.txt 10.10.10.12:/root/
Lưu ý:
-P viết hoa-p viết thườngĐây là lỗi rất nhiều người dễ nhầm.
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/
Dùng option -p:
scp -p test1.txt 10.10.10.12:/root/
SCP sẽ giữ nguyên:
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 ý:
arcfour đã bị loại bỏ trên OpenSSH mớiNguyên nhân:
Kiểm tra:
ls -ld /root/
Nguyên nhân:
Kiểm tra:
systemctl status sshd
Nguyên nhân:
Kiểm tra:
ls -lah
-P viết hoa cho port SSH — Đây là lỗi rất nhiều người nhầm với ssh -p.-C.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ế.