Cập nhật: Mã bên dưới đã được cập nhật để phản ánh những thay đổi được xác định trong câu trả lời được đánh dấu và do đó đang hoạt động như mong đợi.
Tôi đang cố gắng thiết lập những người dùng chỉ sử dụng SFTP trên máy chủ của mình, những người dùng này được lưu vào thư mục chính của họ. Khi cố gắng kết nối với máy chủ, tôi nhận được lỗi đường ống bị hỏng:
debug1: Xác thực thành công (mật khẩu).
Đã xác thực với xxxx.xxxxxxxx.com ([XX.XX.XX.XX]:22).
debug2: cài đặt fd 5 O_NONBLOCK
debug3: fd 6 là O_NONBLOCK
debug1: kênh 0: [phiên khách hàng] mới
gỡ lỗi3: ssh_session2_open: channel_new: 0
debug2: kênh 0: gửi mở
debug3: gửi gói tin: gõ 90
debug1: Yêu cầu [email protected]
debug3: gửi gói: gõ 80
debug1: Đang vào phiên tương tác.
gỡ lỗi1: cam kết: mạng
debug3: gửi gói tin: gõ 1
packet_write_wait: Kết nối với cổng XX.XX.XX.XX 22: Đường ống bị hỏng
Không thể đọc gói: Thiết lập lại kết nối bởi ngang hàng
Tôi đã xác định rằng điều này có liên quan đến nỗ lực bỏ tù người dùng của tôi. Của tôi sshd_config
bao gồm:
Hệ thống con sftp nội bộ-sftp
Ghép nhóm sftponly
ForceCommand internal-sftp -d /%u
Xác thực mật khẩu có
ChrootDirectory /home/sftp
Giấy phépTunnel không
AllowAgentForwarding không
AllowTcpForwarding không
X11Số chuyển tiếp
sftponly
là tên của nhóm tôi đã tạo cho người dùng sftp. Chủ sở hữu và nhóm của /home/sftp
Là nguồn gốc
chỉ với quyền ghi cho chủ sở hữu (0711
).
$ chown root:root /home/sftp
$ chmod 0711/nhà/sftp
Đây là cách tôi tạo người dùng (trong ví dụ này, người dơi
) -- lưu ý rằng tôi đang thực hiện việc này thông qua tập lệnh Perl, do đó tôi sử dụng chpasswd
:
$ adduser --quiet --disabled-password --shell /bin/false --no-create-home --gecos "Người dùng" batman
$ tiếng vang "người dơi:người dơi123" | chpasswd
$ usermod -a -G sftponly batman
$ cài đặt -d -m 0755 /home/sftp/batman -o batman -g sftponly
Lưu ý: Tôi đang tạo thư mục chính của người dùng theo cách thủ công thay vì chuyển --hệ thống
tranh luận cho thêm người dùng, vì cuối cùng tôi gặp lỗi khi thử và thay đổi quyền sở hữu thư mục:
chown: nhóm không hợp lệ: âbatman:batmanâ
Nếu tôi cập nhật sshd_config
, và thay đổi thư mục chroot thành:
ChrootDirectory /home/sftp
Tôi có thể truy cập máy chủ thành công và không còn nhận được lỗi đường ống bị hỏng nữa. Tuy nhiên, tôi hạ cánh ở /home/sftp
khi đăng nhập, nơi tôi thấy danh sách tất cả các thư mục người dùng khác, thay vì truy cập vào /home/sftp/người dơi
như tôi mong đợi sẽ xảy ra.
Làm cách nào tôi có thể cải thiện/sửa lỗi này để người dùng:
- chỉ có quyền truy cập vào thư mục riêng của họ (
/home/sftp/người dơi
)
- khi đăng nhập, sẽ xuất hiện trong vòng
/
(mà thực ra là /home/sftp/người dơi
)
- không thể điều hướng đến
/home/sftp
(để họ không thể nhìn thấy danh sách những người dùng khác)