Câu trả lời:
Tóm lại, SCP chỉ có thể được sử dụng để truyền tệp và nó không tương tác (nghĩa là mọi thứ phải được chỉ định trên dòng lệnh). SFTP phức tạp hơn và cho phép các lệnh tương tác thực hiện những việc như tạo thư mục, xóa thư mục và tệp (tất cả phải tuân theo quyền hệ thống, tất nhiên), v.v.
ForceCommand internal-sftp
. Tôi nghĩ PermitTTY no
cũng ngăn chặn truy cập scp nhưng cho phép truy cập sftp, mặc dù tôi có thể vừa nhập nhầm mật khẩu mỗi lần tôi thử. Nhưng hai điều đó không nên ngăn chặn sftp. Nguồn: kinh nghiệm cá nhân.
Từ Wikipedia :
So với giao thức SCP trước đây, chỉ cho phép truyền tệp, giao thức SFTP cho phép thực hiện một loạt các hoạt động trên các tệp từ xa - nó giống như một giao thức hệ thống tệp từ xa. Các khả năng bổ sung của máy khách SFTP so với máy khách SCP bao gồm tiếp tục chuyển bị gián đoạn, danh sách thư mục và xóa tệp từ xa. [1] Vì những lý do này, việc triển khai ứng dụng GUI SFTP tương đối đơn giản so với máy khách GUI SCP.
và
Mặc dù cả SCP và SFTP đều sử dụng cùng một mã hóa SSH trong quá trình truyền tệp với cùng một mức phí chung, SCP thường nhanh hơn nhiều so với SFTP khi truyền tệp, đặc biệt là trên các mạng có độ trễ cao. Điều này xảy ra bởi vì SCP thực hiện một thuật toán chuyển hiệu quả hơn, một thuật toán không yêu cầu chờ xác nhận gói. Điều này dẫn đến tốc độ nhanh hơn nhưng phải trả giá bằng việc không thể làm gián đoạn quá trình chuyển, do đó, không giống như SFTP, chuyển SCP không thể bị hủy mà không kết thúc phiên.
Từ quan điểm dòng lệnh hoàn toàn:
Sự khác biệt quan trọng khác giữa 2 lệnh là sftp không thể đặt tệp cục bộ đến một vị trí từ xa bằng một dòng lệnh , mặc dù nó có thể nhận được tệp từ xa, trong khi scp có thể làm cả hai .
sftp user@host:/path/to/remote.file [/path/to/local.file]
scp user@host:/path/to/remote.file [/path/to/local.file]
scp /path/to/local.file user@host:[/path/to/remote.file]
sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
SSH ( S ecure SH ell) là một giao thức mạng mật mã để cho phép đăng nhập từ xa và các dịch vụ mạng khác hoạt động an toàn trên một mạng không bảo mật.
Sự khác biệt: SFTP hoạt động trên chế độ tương tác (phiên) và SCP hoạt động trên không tương tác. Sử dụng SFTP, chúng ta có thể truy cập hệ thống tệp từ xa, tức là tạo, xóa và liệt kê các tệp.
Điểm tương đồng: Cả hai SCP ( S ecure C Sao chép P rotocol) và SFTP ( S SH F ile T ransfer P rotocol) là giao thức mạng, hỗ trợ quản lý tập tin giữa các host trên mạng. Cả hai đều sử dụng SSH.
Hầu hết sự khác biệt của hai giao thức đã được nói trong các câu trả lời khác và rõ ràng hơn trong https://unix.stackexchange.com/q/8707/19088
Một sự khác biệt khác, theo tài liệu của curl , là giao thức SCP không dễ mang theo và thường chỉ hoạt động giữa các hệ thống Unix.
Nhân tiện, curl thực hiện cả hai giao thức và không giống như triển khai máy khách SFTP OpenSSH mặc định, nó không tương tác cho cả SFTP và SCP.
Và lưu ý rằng cũng có giao thức FISH , cho phép bạn chuyển các tệp qua SSH mà không cần SCP hoặc SFTP. Theo như tôi biết thì FISH không phổ biến lắm, hiện chỉ được triển khai trong một vài trình quản lý tệp ( Midnight Commander và một số dựa trên KDE) và Lftp .