Tin tức và phân tích của tất cả các thiết bị di động

Cách dùng lệnh scp để truyền file an toàn trên Linux

Giả sử bạn muốn di chuyển một số file giữa các máy chủ trên Linux. Có nhiều cách để hoàn thành nhiệm vụ này, nhưng nếu việc truyền tệp an toàn là ưu tiên của bạn thì vẫn còn một số tùy chọn. Giải pháp đơn giản nhất là sử dụng lệnh scp hoặc sao chép an toàn để truyền tệp mà không cần lo lắng về bảo mật. Trong bài viết này, chúng tôi sẽ giải thích cách truyền tệp một cách an toàn bằng lệnh scp trong Linux.

Truyền tệp bằng lệnh scp trong Linux (2023)

Lệnh scp trong Linux là gì

Khi nói đến việc truyền tệp qua mạng an toàn, lệnh scp có thể rất hữu ích. Nó là viết tắt của Giao thức sao chép an toàn và chuyển các tập tin và thư mục giữa hai hệ thống qua kết nối SSH (Secure Shell). Với ssh, bạn có thể chắc chắn về tính bảo mật của các tệp của mình vì chúng được mã hóa theo mặc định. Nói một cách đơn giản, lệnh scp là phiên bản an toàn hơn của lệnh cp mà bạn có thể đọc trong bài viết của chúng tôi về các lệnh đầu cuối Linux.

Cách sử dụng lệnh scp: cú pháp và các tùy chọn

Trước khi chúng ta có thể truyền file qua scp, hãy xem cú pháp lệnh và các tùy chọn tại đây:

scp <[email protected]_ip_address:đường dẫn/đến/nguồn/tệp> <[email protected]_ip_address:đích/đường dẫn>

Hiểu cú pháp:

  • Đầu tiên, <[email protected]_ip_address:path/to/source/file> chỉ định hệ thống “nguồn” để di chuyển tệp/thư mục.
  • Thứ hai, <[email protected]_ip_address:target/path> chỉ định hệ thống “đích” mà bạn muốn di chuyển tệp/thư mục của mình tới.

Nếu bạn để lại một trong các tham số trên, lệnh scp của Linux trước tiên sẽ tìm kiếm tệp và sau đó sao chép nó cục bộ. Một số tùy chọn ghép lệnh bao gồm:

OptionsDestination-P Chỉ định cổng nào sẽ kết nối với hệ thống máy chủ. Nếu bỏ qua, cổng 22 sẽ được sử dụng theo mặc định -pGiữ thời gian sửa đổi, thời gian truy cập và chế độ từ file gốc khi sao chép vào hệ thống đích. -rSao chép đệ quy toàn bộ thư mục vào hệ thống đích.-JĐược sử dụng để kết nối hệ thống nguồn và hệ thống đích thông qua hệ thống proxy (máy chủ nhảy).-3khi cờ này được sử dụng, sao chép tệp vào cả hệ thống đích và hệ thống cục bộ- 4 buộc lệnh scp chỉ sử dụng địa chỉ IPv4.-6 buộc lệnh scp chỉ sử dụng địa chỉ IPv6.

Cách sao chép tập tin bằng lệnh scp

Trước khi sử dụng lệnh scp trên Linux, phải đáp ứng một số điều kiện tiên quyết nhất định trên cả hệ thống máy chủ và hệ thống đích:

  • ssh nên được cài đặt
  • quyền truy cập root hoặc bất kỳ người dùng nào có đặc quyền sudo

Sao chép tập tin từ máy chủ cục bộ sang mục tiêu từ xa

Nếu bạn có một tệp muốn di chuyển từ hệ thống cục bộ của mình đến một đích ở xa, bạn phải sử dụng cú pháp sau:

scp @:

Nếu cú ​​pháp trên có vẻ phức tạp thì một ví dụ sẽ giải thích nó:

scp test.txt [email protected]:/home/remote2/Documents/

Trong ví dụ trên:

  • test.txt là tên của tệp sẽ được tải lên, nằm trong thư mục hiện tại của hệ thống cục bộ.
  • test là tên người dùng trên hệ thống đích.
  • 139.144.11.105 là địa chỉ IP của hệ thống đích.
  • /home/remote2/Documents/ là vị trí trên hệ thống đích nơi tệp đã tải lên sẽ được lưu.

Sao chép tập tin từ máy chủ từ xa đến đích cục bộ

Nếu bạn muốn chuyển tệp từ máy chủ từ xa sang máy cục bộ của mình, hãy sử dụng cú pháp lệnh scp sau trên Linux:

scp @:

Ví dụ: giả sử bạn cần tải lên tệp có tên test.py từ máy chủ từ xa mà bạn đang làm việc, hãy sử dụng lệnh này:

scp [email protected]:/home/test/test1.py ~/test1.py

Trong ví dụ này:

  • test là tên người dùng của máy chủ từ xa.
  • 10.10.11.113 là địa chỉ IP của máy chủ từ xa.
  • /home/test/test1.py là đường dẫn đến tệp sẽ được tải lên từ máy chủ từ xa.
  • ~/test1.py là tên của tệp sau khi bạn tải nó lên máy cục bộ và lưu nó vào thư mục chính của bạn.

Chuyển tập tin từ một máy chủ từ xa sang một đích từ xa khác

Với lệnh scp, bạn không chỉ có thể truyền tệp giữa hệ thống cục bộ và máy từ xa mà còn có thể truyền tệp giữa hai hệ thống từ xa. Tuy nhiên, trước khi bạn có thể truyền tệp từ hệ thống từ xa này sang hệ thống khác, bạn nên tạo khóa ssh riêng và khóa ssh công khai trên hệ thống nguồn và giữ một bản sao của khóa chung trên hệ thống đích.

Nói chung, người dùng phàn nàn về lỗi “Xác minh khóa máy chủ không thành công” khi truyền tệp giữa hai hệ thống từ xa. Để khắc phục lỗi, hãy sử dụng phím ssh như một biện pháp bổ sung. Chúng tôi đã giải thích cách bạn có thể làm điều đó ở đây:

1. Tạo cặp khóa chung/riêng trên máy chủ nguồn bằng lệnh này:

ssh-keygen -t

2. Đối với các thuật toán mã hóa, bạn có thể sử dụng ‘rsa’, thuật toán được sử dụng phổ biến nhất hoặc bất kỳ thuật toán nào khác mà bạn chọn.

3. Sau đó, bạn sẽ được yêu cầu chọn vị trí để lưu trữ khóa ssh của mình. Bạn có thể lưu trữ nó ở bất kỳ vị trí nào bạn chọn hoặc ở vị trí mặc định.

4. Bạn có thể nhập bất kỳ mật khẩu nào làm mật khẩu hoặc để trống bằng cách nhấn Enter.

5. Sau đó sao chép khóa chung vào máy chủ đích bằng lệnh bên dưới. Với điều này, bạn thậm chí có thể đăng nhập vào hệ thống đích mà không cần mật khẩu bằng ssh.

ssh-sao chép-id @

Lưu ý: Phương thức đăng nhập không cần mật khẩu sẽ chỉ hoạt động đối với người dùng mà bạn đã tạo khóa ssh.

6. Sau khi tạo và lưu trữ khóa ssh trên máy chủ từ xa, hãy sử dụng cú pháp lệnh scp này để trao đổi tệp giữa hai hệ thống Linux từ xa:

scp @: @:

Giả sử bạn cần chuyển một tệp có tên test.txt từ máy chủ từ xa này sang máy chủ từ xa khác, hãy sử dụng lệnh:

scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt

Trong ví dụ này:

  • remote1 là tên người dùng trên máy chủ từ xa của người gửi
  • 10.10.11.113 là địa chỉ IP máy chủ của người gửi từ xa
  • /home/test1/test.txt là đường dẫn tới file cần upload
  • remote2 là tên người dùng trên trình nghe từ xa mục tiêu
  • 10.11.27.111 là địa chỉ IP của người nhận từ xa mục tiêu
  • /home/remote2/Documents/test1.txt là tên và đường dẫn lưu file cần nhận.

Tải lên nhiều tệp bằng lệnh scp

Chuyển nhiều tệp từng cái một có thể là một công việc tẻ nhạt đối với bất kỳ ai. Thay vào đó, bạn có thể sử dụng cú pháp bên dưới để trao đổi file bằng lệnh scp trên Linux:

scp @:

Ví dụ: Giả sử bạn cần gửi bốn tệp bao gồm test1.txt, test2.py, test3.sh và test4.c tới một máy thu từ xa, bạn có thể sử dụng lệnh bên dưới:

scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Tài liệu

Hãy xem lệnh trong ví dụ hoạt động như thế nào và nó làm gì:

  • -p 2222 được sử dụng để chỉ định kết nối cổng 22
  • test1.txt test2.py test3.sh test4.c là tên các file cần upload
  • remote_1 là tên người dùng của hệ thống nhận
  • 10.10.11.113 là địa chỉ IP của người nhận
  • /home/remote_1/Documents đề cập đến đường dẫn lưu trữ của tệp đã nhận.

Bạn thậm chí có thể sử dụng ký tự đại diện để gửi nhiều tệp có cùng phần mở rộng như hiển thị bên dưới:

scp. @:

Ví dụ: nếu bạn muốn gửi tất cả các tệp .py đến máy chủ từ xa, hãy sử dụng lệnh scp sau trong thiết bị đầu cuối Linux:

spp *.py [email protected]:/home/remote_1/

Đây,

  • *.py là viết tắt của tất cả các tệp python
  • remote1 là tên người dùng của người nhận
  • 10.10.11.113 là địa chỉ IP của người nhận
  • /home/remote_1/ là nơi lưu file nhận được

Các câu hỏi thường gặp

Tải lên các tập tin SCP có an toàn không?

Giao thức sao chép an toàn hoặc scp là giao thức dựa trên công nghệ SSH và sử dụng mã hóa và xác thực để trao đổi tệp giữa hai máy chủ. Điều này đảm bảo tính bảo mật và toàn vẹn dữ liệu đầy đủ giữa hai máy chủ.

SCP có an toàn hơn SFTP không?

Cả hai giao thức SCP và SFTP đều ngang bằng về mặt bảo mật. Lợi ích chính của việc sử dụng scp qua SFTP là tốc độ truyền cao, đặc biệt hữu ích trên các mạng có độ trễ cao.

Truyền tệp an toàn bằng lệnh scp trong Linux

Tại một thời điểm nào đó, mọi người dùng đều cần trao đổi một số tệp qua mạng. Lệnh scp giúp dễ dàng truyền tệp một cách an toàn và hiệu quả ngay cả qua mạng có độ trễ cao. Chắc chắn, việc biết các tùy chọn và cú pháp khác nhau của scp cũng có thể hữu ích. Bạn cũng có thể xem hướng dẫn của chúng tôi về cách đổi tên tệp trong Linux và cách xóa tệp trong Linux để cải thiện hơn nữa kỹ năng quản lý tệp hệ điều hành của bạn. Chúng tôi hy vọng bài viết này đã giúp bạn tìm hiểu cách sử dụng lệnh scp để truyền tệp trên máy tính Linux. Nếu bạn gặp bất kỳ vấn đề nào trong quá trình sử dụng lệnh, hãy cho chúng tôi biết trong phần bình luận.