Làm cách nào tôi có thể tạo người dùng chỉ cho sftp?


15

Tôi đã thêm một người dùng vào hệ thống thông qua addusercông cụ. Sau đó, /etc/passwdtôi đã cố gắng thay đổi /bin/bashthành /sbin/nologinhoặc thành /dev/null, nhưng cả hai đều không hoạt động.

Tôi muốn người dùng không có tùy chọn để có được một vỏ tương tác, và chỉ để sử dụng sftp. Là có một cách?

Tôi biết nó đã được hỏi ở đây trước đây nhưng có vẻ như không ai đưa ra câu trả lời thỏa đáng.


Bạn có ý nghĩa gì bởi "không may mắn"?
Paweł Brodacki

Tôi có nghĩa là scp / sftp từ xa không hoạt động. Tôi đã giải quyết nó bằng cách sử dụng lớp vỏ đáng tin cậy theo đề xuất của Iain
Toni Rosa

Câu trả lời:


9

Lệnh bạn nên sử dụng để thay đổi shell là chsh . Vỏ nologin có thể /sbin/nologinhoặc /usr/sbin/nologin(kiểm tra xem bạn có bằng cách nhìn vào /etc/shells) nhưng /bin/falsecó lẽ sẽ là lựa chọn tốt hơn.

chsh -s /bin/false user

Bạn nên xem xét việc thiết lập một cái gì đó như scponly sẽ làm chính xác những gì bạn muốn.


Cảm ơn câu trả lời của bạn. Tôi đã thử với các shell bên trong / etc / shell nhưng không có may mắn ... / bin / false cho "kết nối bị mất" và / sbin / nologin trả về "Tài khoản này hiện không có sẵn." Tôi sẽ thử cái này một cách khéo léo
Toni Rosa

Tôi đã giải quyết nó bằng cách sử dụng vỏ scponly! Chúc mừng
Toni Rosa

3
Câu trả lời này là kim trong cỏ khô! Hãy chắc chắn /bin/false/bin/nologinthực sự có sẵn trong /etc/shells!
Afr

@Afri Tốt, nhưng ... bạn sẽ thực sự muốn đọc serverfault.com/questions/328395/ . Điều này là khá chống chỉ định.
Reinderien

@Afr đừng bỏ nologinvào /etc/shells! serverfault.com/a/328424
RobAu

9

Bạn cũng có thể làm điều đó với OpenSSH 4.9 trở lên, ngoài ra bạn có thể chroot người dùng để tăng tính bảo mật.

Trong của bạn /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Sau đó chạy:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

Người dùng sẽ chỉ có thể ghi vào / nhà / người dùng / tải lên.

https://debian-adftime.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory


+1 Tôi đã đưa điều này vào danh sách của mình để điều tra.
user9517 được hỗ trợGoFundMonica

1
Tôi đã sử dụng nó và nó hoạt động rất tốt - bạn cũng có thể cho người dùng lựa chọn đăng nhập vào môi trường chroot bằng shell, nhưng trong trường hợp đó bạn phải sao chép tối thiểu các thư viện và một số tiện ích khác như mong đợi. Jailkit ( olivier.sessink.nl/jailkit ) có ích cho việc đó.
Eduardo Ivanec

Cảm ơn, ForceCommand là một gợi ý. Tôi không cần chroot, nhưng tôi muốn đăng nhập vào SFTP bằng tài khoản dịch vụ.
AnrDaemon

2

Tôi nghĩ rằng cách tốt nhất là với mysecureshell

http://mysecureshell.sourceforge.net/en/index.html

Bạn có thể chroot một người dùng với điều này dễ dàng và thậm chí giới hạn băng thông nếu cần.


Tôi đã giải quyết nó bằng cách sử dụng cái vỏ đáng tin cậy, nhưng thật là can thiệp khi biết mysecureshell này
Toni Rosa

1

Bạn có thể thêm người dùng -s /bin/falseđể vô hiệu hóa trình bao của họ, nhưng những gì bạn thực sự nên xem xét khi thiết lập là một acccount sftp chroot. Điều này sẽ "tống giam" người dùng vào thư mục riêng của họ và ngăn họ không thể truy cập hoặc sửa đổi bất kỳ tệp hoặc thư mục nào bên ngoài thư mục chroot.


Cảm ơn câu trả lời của bạn, nhưng nó dường như không hoạt động. Tôi nhận được "mất kết nối" bất cứ khi nào tôi thử người dùng sử dụng shell / bin / false.
Toni Rosa
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.