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

Cách sử dụng lệnh scp để truyền tệp an toàn trong Linux

Giả sử bạn muốn chuyển một số tệp giữa các máy chủ trên hệ thống Linux. Có nhiều cách để bạn có thể hoàn thành nhiệm vụ, nhưng nếu ưu tiên của bạn là truyền tệp một cách an toàn thì bạn chỉ có 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 lệnh sao chép an toàn để truyền tệp của bạn 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 sử dụng tệp truyền một cách an toàn bằng lệnh scp trên hệ thống Linux của bạn.

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ể yên tâm 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 hơn, lệnh scp là phiên bản an toàn hơn của lệnh cp, bạn có thể đọc tất cả về lệnh này trong bài viết về lệnh Linux Terminal của chúng tôi.

Cách sử dụng lệnh scp: Cú pháp & Tùy chọn

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

scp

Hiểu cú pháp:

  • Đầu tiên, chỉ định hệ thống ‘nguồn’ từ nơi bạn cần chuyển các tập tin/thư mục của mình.
  • Thứ hai, chỉ định hệ thống ‘đích’ mà bạn muốn chuyển các tập tin/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 trong Linux trước tiên sẽ tìm tệp rồi sao chép tệp cục bộ. Một số tùy chọn để ghép nối với lệnh là:

Tùy chọnĐích
-PChỉ định cổng nào để kết nối với hệ thống máy chủ. Nếu bị bỏ qua thì nó sẽ sử dụng cổng 22 theo mặc định.
-PGiữ nguyên thời gian sửa đổi, thời gian truy cập và chế độ từ tệp gốc khi sao chép vào hệ thống đích.
-rSao chép toàn bộ thư mục vào hệ thống đích theo cách đệ quy.
-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, nó sẽ sao chép các tệp vào cả hệ thống đích cũng như hệ thống cục bộ
-4buộc lệnh scp chỉ sử dụng địa chỉ IPv4.
-6buộ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 trong Linux, có một số điều kiện tiên quyết mà bạn cần phải đáp ứng 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 từ máy chủ cục bộ sang mục tiêu từ xa

Nếu bạn có một tệp cần chuyển từ hệ thống cục bộ sang mục tiêu từ xa, bạn cần sử dụng cú pháp sau:

scp @:

Nếu cú ​​pháp trên có vẻ phức tạp, một ví dụ sẽ làm rõ 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 chuyển và 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 được truyền sẽ được lưu.

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

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

scp @:

Ví dụ: giả sử bạn cần chuyển một 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 máy chủ từ xa.
  • 10.10.11.113 là địa chỉ IP máy chủ từ xa.
  • /home/test/test1.py là đường dẫn của tệp được truyền từ máy chủ từ xa.
  • ~/test1.py là tên của tệp sau khi nó được chuyển sang máy cục bộ và được lưu trong thư mục chính.

Chuyển tập tin từ một máy chủ từ xa sang một mục tiêu 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 tin 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 từ xa 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à lưu trữ bản sao của khóa chung trong 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 khóa ssh làm biện pháp bổ sung. Chúng tôi đã giải thích cách bạn có thể làm điều đó ngay tại đâ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”, đây là 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. 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. Đối với cụm mật khẩu, bạn có thể nhập bất cứ thứ gì bạn chọn 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-copy-id @

Note: 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. Khi bạn đã 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 từ xa chạy Linux:

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 của người dùng trong máy chủ gửi từ xa
  • 10.10.11.113 là địa chỉ IP của máy chủ gửi từ xa
  • /home/test1/test.txt là đường dẫn đến file cần gửi
  • remote2 là tên của người dùng trong mục tiêu thu từ xa
  • 10.11.27.111 là địa chỉ IP của mục tiêu thu từ xa
  • /home/remote2/Documents/test1.txt là tên và đường dẫn được lưu để nhận tệp.

Chuyển nhiều tập tin 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/Documents

Hãy hiểu 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 qua cổng 22
  • test1.txt test2.py test3.sh test4.c là tên của các tệp được chuyển
  • 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ữ 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 cần gửi tất cả các tệp .py đến máy chủ từ xahãy sử dụng lệnh scp bên dưới trong Linux Terminal:

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

Đây,

  • *.py biểu thị 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

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ả trên mạng có độ trễ cao. Chắc chắn, việc biết các tùy chọn và cú pháp scp khác nhau cũng có thể hữu ích. Bạn cũng có thể tham khảo 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 của bạn trên HĐH. 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 phải bất kỳ vấn đề nào trong khi sử dụng lệnh, hãy cho chúng tôi biết trong phần bình luận.

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

Việc truyền 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 toàn vẹn và bảo mật dữ liệu hoàn chỉnh 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. Ưu điểm chính của việc sử dụng scp qua SFTP là tốc độ truyền nhanh, đặc biệt hữu ích trong các mạng có độ trễ cao.

Mục lục