Sự khác biệt giữa SCP và SFTP là gì?


161

Thông thường, tôi sử dụng scplệnh để truyền tệp trên * nixes.

Sự khác biệt giữa SFTP và SCP là gì? Cả hai đều không hoạt động trên SSH?

Câu trả lời:


98

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.


34
Về tính tương tác: Sự khác biệt mà bạn mô tả là về các máy khách SFTP / SCP cụ thể được triển khai trong OpenSSH. Không có gì về bản thân các giao thức. Hoàn toàn có thể thực hiện ứng dụng khách SCP tương tác hoặc máy khách SFTP không tương tác.
Martin Prikryl

4
Một điều nữa: scp không hoạt động nếu máy chủ chỉ cho phép truy cập SFTP qua đường dây ForceCommand internal-sftp. Tôi nghĩ PermitTTY nocũ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.
ecube

Tôi có thể cho rằng bất kỳ máy chủ SFTP nào cũng có khả năng chấp nhận chuyển SCP không?
gus

@gus không, xem bình luận của ecube
Pere

104

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.

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.


18
"SCP thường nhanh hơn nhiều so với SFTP khi truyền tệp."
Micah Bolen

3
"Nhưng phải trả giá khi không thể làm gián đoạn việc chuyển tiền". Đó là một sự đánh đổi khá quan trọng.
aaaaaa

aaaaaa, "không kết thúc phiên" không phải là vấn đề lớn nếu tất cả các phiên dành cho việc sao chép tệp. Nếu bạn đang sao chép nhiều tệp, khách hàng cũng có thể đợi một bản sao tệp riêng lẻ hoàn tất.
Victor Sergienko

9

Từ quan điểm dòng lệnh hoàn toàn:

  • scp không có chế độ tương tác và cũng không thể đọc các tập lệnh, điều đó có nghĩa là mọi thứ phải được ghi trên dòng lệnh.
  • sftp có chế độ tương tác và có thể đọc các lệnh từ một tệp.

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 nhận tập tin từ xa

sftp user@host:/path/to/remote.file [/path/to/local.file]

scp lấy tập tin từ xa

scp user@host:/path/to/remote.file [/path/to/local.file]

scp đặt tập tin từ xa

scp /path/to/local.file user@host:[/path/to/remote.file]

2
Đặt một tệp:sftp {user}@{host}:{remote_dir} <<< $'put {local_file_path}'
gdw2

3

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ơn


2

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 .


2
"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." Điều trớ trêu của phần này trong câu trả lời của bạn là GUI SCP phổ biến nhất được gọi là WinSCP và - bạn đã đoán ra - đó là Chương trình Windows.
brett

1
@brett khách hàng phổ biến nhất có lẽ là Scp của OpenSSH, tôi sẽ nói rằng nó được triển khai cao. WinSCP là một máy khách SCP / SFTP / etc nhưng ngày nay chủ yếu được sử dụng như một máy khách FTP (S): "Vào tháng 6 năm 2003, phiên bản 3.0 đã được phát hành, giới thiệu hỗ trợ cho sự thay thế cho SCP, giao thức SFTP. đến giao thức chính. Mặc dù vậy, cái tên được thiết lập tốt là Win WinSCP 'vẫn được giữ nguyên. " (từ Lịch sử của WinSCP: woncp.net/eng/docs/project_history)
Pere
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.