Tôi có một máy chủ FTP xác thực thông qua API và có các thư mục người dùng trong:
/home/ftpusers/files/<username>
Một số người dùng đã yêu cầu SFTP thay vào đó và vì tôi đã có sẵn các quy trình để đặt các tệp vào thư mục của người dùng, tôi cho rằng tôi chỉ có thể tạo tài khoản cho người dùng.
useradd -g sftpgroup -d /home/ftpusers/files/username/ -s /sbin/nologin username
mkdir -p /home/ftpusers/files/username/.ssh
chown -R username:ftpgroup /home/ftpusers/files/username
chmod -R 770 /home/ftpusers/files/username
echo "ssh-rsa user key" > /home/ftpusers/files/username/.ssh/authorized_keys
chown username:sftpgroup /home/ftpusers/files/username/.ssh
chmod 700 /home/ftpusers/files/username/.ssh
chown username:sftpgroup /home/ftpusers/files/username/.ssh/authorized_keys
chmod 600 /home/ftpusers/files/username/.ssh/authorized_keys
ftpgroup là một tài khoản hệ thống có thể đặt các tệp trong thư mục người dùng, sftpgroup sẽ khóa người dùng này thành SFTP bằng cách sử dụng:
Match Group sftpgroup
ForceCommand internal-sftp
AllowTCPForwarding no
X11Forwarding no
Thật không may, điều này không làm việc. Không có lỗi hữu ích, chỉ:
Permission denied (publickey)
Nó hoạt động tốt mặc dù nếu tôi tạo người dùng theo cách chuẩn hơn trong thư mục / home /
Bất cứ ý tưởng về lý do tại sao? Tôi biết chroot có rất nhiều hạn chế cho phép. Đây có phải là một cái gì đó như thế?
Đã thêm đầu ra namei: Điều chắc chắn:
namei -l /home/ftpusers/files/jmandel/.ssh
f: /home/ftpusers/files/jmandel/.ssh
dr-xr-xr-x root root /
drwxr-xr-x root root home
drwxrwx--- ftpuser ftpgroup ftpusers
drwxrwx--- ftpuser ftpgroup files
drwxrwx--- jmandel ftpgroup jmandel
drwx------ jmandel sftpgroup .ssh
Đánh dấu câu trả lời dưới đây có thông tin tốt trong chủ đề bình luận