OpenSSH: Sự khác biệt giữa máy chủ nội bộ và máy chủ sftp


81

Tại sao có hai cách để thiết lập SFTP với OpenSSH và khi nào nên sử dụng? Có sự khác biệt nào giữa chúng không?

Ý tôi là cái đầu tiên đang sử dụng lib từ OpenSSH và cái thứ hai nói "sử dụng nội bộ", vậy nó cũng là OpenSSH?

Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Câu trả lời:


94

Cả hai sftp-serverinternal-sftplà một phần của OpenSSH. sftp-serverlà một nhị phân độc lập. internal-sftpchỉ là một từ khóa cấu hình cho biết sshdsử 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-serverinternal-sftpgầ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-sftpnó là không yêu cầu các tệp hỗ trợ khi được sử dụng với ChrootDirectorychỉ thị .

Trích dẫn từ sshd_config(5)trang người đàn ông :

  • Đối với Subsystemchỉ thị :

    Lệnh sftp-serverthực hiện hệ thống con truyền tệp SFTP.

    Thay vào đó, tên internal-sftpthự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 ChrootDirectorymột hệ thống tập tin gốc khác nhau trên các máy khách.

  • Đối với ForceCommandchỉ thị :

    Chỉ định lệnh internal-sftpsẽ 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 ChrootDirectorychỉ thị :

    Các ChrootDirectorybạ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 /devcác nút như null, zero, stdin, stdout, stderr, và ttycá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/logbê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-sftplà 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-servernhị 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-servercho các cài đặt mới.


Nó dường như sshdcó 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-sftpthậ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-sftpsẽ bỏ qua hạn chế, vì shell đăng nhập không còn liên quan.

  • Sử dụng sftp-servernhị 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ó), Subsystemchỉ 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-servertên mã hóa cứng.



6

Bạn có thể khóa ủy quyền_key vào máy chủ sftp bên ngoài.

lệnh = "/ usr / libexec / openssh / sftp-server" ssh-rsa AAAAọ == user@host.com

Khi bạn làm như vậy, người dùng của bạn có thể sftp, nhưng không thể scp hoặc ssh:

máy chủ $ sftp: / etc / group / tmp
Kết nối với máy chủ lưu trữ...
Tìm nạp / etc / nhóm vào / tmp / nhóm
/ etc / nhóm 100% 870 0,9KB / giây 00:00

Cố gắng làm bất cứ điều gì khác sẽ chỉ bị treo:

$ scp host: / etc / group / tmp
Bị giết bởi tín hiệu 2.

$ ssh lưu trữ thời gian hoạt động
Bị giết bởi tín hiệu 2.

Than ôi, không có cách nào dễ dàng để khóa được khóa với chroot trừ khi sshd_config được sửa đổi. Điều này sẽ thực sự tuyệt vời cho người dùng có thể làm mà không cần sự can thiệp của người quản lý hệ thống.


3
ForceCommand internal-sftpnên đạt được điều tương tự
ptman

Điều tiện dụng là không có chroot, bạn có thể sử dụng sshfs host:/home/user/.ssh ~/hackmeđể chỉnh sửa tất cả các cài đặt đó để truy cập mở nếu bạn đổi ý sau này.
sh1
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.