Cả hai sftp-server
và internal-sftp
là một phần của OpenSSH. sftp-server
là một nhị phân độc lập. internal-sftp
chỉ là một từ khóa cấu hình cho biết sshd
sử dụng mã máy chủ SFTP tích hợp sshd
, thay vì chạy một quy trình khác (thường là sftp-server
).
Từ quan điểm chức năng, sftp-server
và internal-sftp
gần như giống hệt nhau. Chúng được xây dựng từ cùng một mã nguồn.
Ưu điểm chính của internal-sftp
nó là không yêu cầu các tệp hỗ trợ khi được sử dụng với ChrootDirectory
chỉ thị .
Trích dẫn từ sshd_config(5)
trang người đàn ông :
Đối với Subsystem
chỉ thị :
Lệnh sftp-server
thực hiện hệ thống con truyền tệp SFTP.
Thay vào đó, tên internal-sftp
thực hiện một máy chủ SFTP đang xử lý. Điều này có thể đơn giản hóa các cấu hình bằng cách sử dụng ChrootDirectory
một hệ thống tập tin gốc khác nhau trên các máy khách.
Đối với ForceCommand
chỉ thị :
Chỉ định lệnh internal-sftp
sẽ buộc sử dụng máy chủ SFTP đang xử lý không yêu cầu tệp hỗ trợ khi sử dụng ChrootDirectory
.
Đối với ChrootDirectory
chỉ thị :
Các ChrootDirectory
bạn cần phải chứa các tập tin và thư mục cần thiết để hỗ trợ phiên làm việc của người dùng. Đối với một phiên tương tác này đòi hỏi phải có ít nhất một vỏ, thường sh
, và cơ bản /dev
các nút như null
, zero
, stdin
, stdout
, stderr
, và tty
các thiết bị. Đối với các phiên truyền tệp bằng SFTP, không cần cấu hình bổ sung cho môi trường nếu máy chủ sftp đang xử lý được sử dụng, mặc dù các phiên sử dụng ghi nhật ký có thể yêu cầu /dev/log
bên trong thư mục chroot trên một số hệ điều hành (xem sftp-server
để biết chi tiết).
Một ưu điểm khác internal-sftp
là hiệu năng, vì không cần thiết phải chạy một quy trình con mới cho nó.
Cái internal-sftp
được thêm vào muộn hơn (OpenSSH 4.9p1 năm 2008?) So với sftp-server
nhị phân độc lập , nhưng bây giờ nó là mặc định.
Tôi tin rằng không có lý do để sử dụng sftp-server
cho các cài đặt mới.
Nó dường như sshd
có thể tự động sử dụng internal-sftp
, khi nó gặp phải sftp-server
, vì chức năng là giống hệt nhau và internal-sftp
thậm chí có những lợi thế trên. Nhưng có trường hợp cạnh, nơi có sự khác biệt.
Một vài ví dụ:
Quản trị viên có thể dựa vào cấu hình shell đăng nhập để ngăn người dùng nhất định đăng nhập. Chuyển sang internal-sftp
sẽ bỏ qua hạn chế, vì shell đăng nhập không còn liên quan.
Sử dụng sftp-server
nhị phân (là một quá trình độc lập), bạn có thể sử dụng một số hack, như chạy SFTP bên dướisudo
.
Đối với SSH-1 (nếu bất cứ ai vẫn đang sử dụng nó), Subsystem
chỉ thị hoàn toàn không liên quan. Máy khách SFTP sử dụng SSH-1 cho máy chủ biết rõ ràng, máy chủ nào sẽ chạy nhị phân. Vì vậy, các máy khách SFTP SSH-1 kế thừa có sftp-server
tên mã hóa cứng.
ForceCommand internal-sftp
nên đạt được điều tương tự