Hy vọng không phải là trùng lặp, nhưng không thể tìm thấy câu trả lời cho câu hỏi này... Tôi đã tìm thấy câu trả lời này, nhìn bề ngoài thì có vẻ giống nhau, nhưng đã rất cũ và câu trả lời duy nhất trong đó không trả lời được câu hỏi thực tế: Đặt Người dùng làm chroot cho sftp, nhưng cho phép người dùng đăng nhập vào SSH
Tôi đã thiết lập thành công môi trường ChrootDirectory đang hoạt động thông qua sftp cho người dùng trong nhóm 'sftp_users'. Nó hoạt động tốt, tất cả các perm thích hợp và như vậy, hạn chế quyền truy cập chỉ sftp và họ có thể rw trong (các) thư mục con của họ bên trong ChrootDirectory. Điều này rất tốt cho những người dùng không có đặc quyền, không cho phép truy cập ssh và chỉ cho phép rw bên trong (các) thư mục con của họ trong ChrootDirectory.
Tôi muốn có những người dùng riêng tư hơn một chút vẫn có thể sử dụng ssh bình thường, tuy nhiên khi đăng nhập qua sftp thì sẽ có môi trường ChrootDirectory. Đây không phải là vấn đề bảo mật, vì chúng được coi là riêng tư và obvi có thể lướt quanh hệ thống tệp trong ssh trong phạm vi quyền người dùng thông thường của chúng. Vấn đề là, tôi không thấy cách Chroot họ khi họ đăng nhập bằng sftp mà không ngăn đăng nhập ssh. Điều này nhằm mục đích tiêu chuẩn hóa và thuận tiện hơn bất kỳ thứ gì khác, vì vậy khi họ sftp, họ chỉ đến vị trí Chroot của họ giống như những người dùng chỉ sftp.
Tôi nghĩ rằng điều này sẽ hoạt động nếu tôi để Shell của họ làm mặc định (không phải /bin/false hoặc nologin). Thật không may, khi họ ở trong nhóm sftp_only, nó sẽ không cho phép họ ssh vào, chỉ có sftp. Có cách giải quyết nào cho vấn đề này không, ngoài việc có hai tài khoản riêng biệt-- một tài khoản được thêm vào 'sftp_users' và một tài khoản không thuộc nhóm đó? Cho đến nay, tất cả những gì tôi có thể tìm thấy là tài liệu về việc hạn chế sftp Chroot và đồng thời không cho phép ssh nếu họ thuộc nhóm đó.
Ví dụ người dùng là 'thử nghiệm'. 'test' nằm trong nhóm sftp_users và do đó có thể đăng nhập qua sftp và được Chroot vào thư mục đã chỉ định của anh ấy ('/sftp/test') và đọc hoặc ghi vào thư mục nhà của anh ấy được gắn kết liên kết tại '/sftp/test/home' . Tất cả điều này hoạt động. Nhưng ngay cả khi shell của anh ta vẫn được đặt trong /etc/passwd thành /bin/bash, 'test' không thể đăng nhập qua ssh nếu được thêm vào nhóm sftp_users. Xóa tư cách thành viên trong nhóm đó và anh ấy có thể làm cả hai, nhưng sau đó không được Chroot trong sftp.
Người dùng không thuộc nhóm 'sftp_users' vẫn có thể đăng nhập qua ssh hoặc sftp, nhưng không được Chroot bằng sftp.
Có cách nào để So khớp giao thức nào được sử dụng và/hoặc có thể đặt So khớp bổ sung cho một nhóm khác không? Tôi chỉ tìm chroot khi họ đăng nhập qua sftp. Không chroot qua ssh là tốt cho những người dùng này.
Sau đây là sshd_config của tôi:
Cổng XXXX
#ListenAddress ::
#ListenAddress 0.0.0.0
giao thức 2
Khóa máy chủ /etc/ssh/ssh_host_rsa_key
Khóa máy chủ /etc/ssh/ssh_host_dsa_key
Khóa máy chủ /etc/ssh/ssh_host_ecdsa_key
Khóa máy chủ /etc/ssh/ssh_host_ed25519_key
SyslogCơ sở AUTH
Thông tin logLevel
Đăng nhậpGraceTime 120
Giấy phépRootĐăng nhập không
Chế độ nghiêm ngặt có
PubkeyAuthentication có
Bỏ quaRhosts có
HostbasedAuthentication không
Giấy phépEmptyMật khẩu không
ChallengeResponseXác thực không
X11Chuyển tiếp có
X11DisplayOffset 10
PrintMotd vâng
PrintLastLog có
ClientAliveCountTối đa 10
ClientAliveInterval 3600
TCPKeepAlive không
#Banner /etc/issue.net
Chấp nhậnEnv LANG LC_*
Hệ thống con sftp /usr/lib/openssh/sftp-server -u 0027
Sử dụngPAM có
Xác thực mật khẩu có
So khớp nhóm sftp_users
ChrootDirectory /sftp/%u
ForceCommand nội bộ-sftp -u 0027
X11Số chuyển tiếp
AllowTcpForwarding không
Xác thực mật khẩu có