Các quy tắc cho người dùng SFTP là gì?


1

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

Câu trả lời:


1

Thêm vào sshd_configtệp của bạn theo chỉ thị và khởi động lại ssh:

AuthorizedKeysFile /home/ftpusers/files/%u/.ssh/authorized_keys .ssh/authorized_keys

Điều này sẽ cho ssh daemon nơi tìm khóa công khai.

Cá nhân tôi không sử dụng authorized_keystrong một thời gian dài, nhưng thay vào đó
AuthorizedKeysCommand, tôi sử dụng chương trình của mình để tìm khóa người dùng cơ sở dữ liệu sqlite và gửi lại để xác thực. Bằng cách này, tôi ngăn người dùng / tin tặc sử dụng khóa riêng của họ và cấu hình như vậy không tiết lộ nơi đặt khóa công khai.


Điều này rất có ý nghĩa nhưng dường như nó không hoạt động
Supergibbs

@Supergibbs Bạn có thể thêm vào đầu ra câu hỏi của bạn về : namei -l /home/ftpusers/files/SomeUserName/.ssh?
Alex

Chắc chắn, được thêm ở trên để định dạng tốt hơn
Supergibbs

Kiểm tra xem người dùng jmandel có thuộc nhóm ftpgroup hay không bằng cách chạyid jmandel
Alex

Không phải vì tôi không muốn, điều đó sẽ cho phép jmandel truy cập vào các thư mục người dùng khác. Có một người dùng trong nhóm ftpg đặt các tệp trong các thư mục người dùng khác nhau. Như một thử nghiệm, tôi đã thêm jmandel vào ftpgroup và nó không giúp được gì
Supergibbs

0

Có thật không

echo "ssh-rsa user key" > /home/ftpusers/files/username/.ssh/authorized_keys

authorized_keyschứa khóa công khai của những người được phép đăng nhập dưới dạng userid này, vì vậy nó khác với mỗi userid bạn tạo. Về lý thuyết, người dùng tạo cặp khóa công khai / riêng của họ và cung cấp cho bạn khóa chung. Tất nhiên bạn có thể tự tạo cặp và cung cấp cho họ phần riêng tư, nhưng nếu có bất cứ điều gì xấu xảy ra, họ có thể cho rằng nó đã được thực hiện bởi người khác bằng khóa riêng của họ.


Người dùng cung cấp cho tôi khóa công khai của họ và tôi sử dụng nó để tạo tài khoản của họ
Supergibbs
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.