我有一台服务器,允许我的服务的部分用户使用 SFTP 上传文件。当我谈到用户时,我既不确定他们是谁,也不确定有多少人有访问权限。
我已设置访问权限如下:
- 使用用户名和密码进行 SFTP(SSH)访问:
PasswordAuthentication yes
。 sftp
用户属于强制使用 的群组internal-sftp
。- 登录处于沙盒
ChrootDirectory %h
中/srv/sftp/incoming
。 - 登录 Shell 是
/bin/false
。
我还能做些什么来确保如此多用户的 SFTP 访问安全?
该机器运行 ArchLinux。Web 服务器是nginx
,但其中的文件/srv/sftp/incoming
不由 Web 服务器提供。它仅供内部使用。
答案1
您可以为每个用户设置 SSH 密钥,这样他们就必须使用私钥才能访问 SFTP 服务器。让客户端自己生成私钥和公钥,然后让他们发送民众对您来说是关键,因此您可以将其添加到~/.ssh/authorized_keys
文件中。
您当然可以自己生成私钥和公钥,但这意味着您需要以某种方式将私钥发送给客户端,这使得它不安全。
ssh-keygen -t rsa
当设置密钥时,您可以禁用密码登录,/etc/ssh/sshd_config
以便他们必须使用私钥才能访问服务器。
PasswordAuthentication no