我需要让 SFTP 访问我服务器上我的 webroot 中的目录。我已将 ben_files 设置为用户并将他的主目录设置为
/var/www/vhosts/mydomain.com/files
如果他使用普通的旧 FTP 连接,那一切都很好——他仅限于该目录,但要启用 SFTP,我必须将他添加到 bin/bash shell,这会突然打开我的整个服务器......
有没有办法让他访问 SFTP 但不打开我所有的目录?我真的很希望他仅限于他的家;)
谢谢!
OpenSSH≥4.8 支持ChrootDirectory
指令。
添加到/etc/sshd_config
或/etc/ssh/sshd_config
任何您的设置的全局sshd
配置文件是:
匹配用户 ben_files # 以下两个指令强制 ben_files 成为 chrooted # 并且只有 sftp 可用。不需要其他 chroot 设置。 ChrootDirectory /var/www/vhosts/mydomain.com/files ForceCommand 内部 sftp # 对于额外的偏执,禁止所有类型的端口转发。 AllowTcpForwarding 否 网关端口号 X11转发号
您可以尝试将他的外壳设置为/bin/rbash
RESTRICTED SHELL 如果 bash 以名称 rbash 启动,或者在调用时提供了 -r 选项,则 shell 会受到限制。受限 shell 用于设置比标准 shell 更受控制的环境。它的行为与 bash 相同,但不允许或不执行以下操作:
· changing directories with cd
加上更多...
在使用它之前,请确保您完全了解允许和禁止的内容。
看看rssh。它可能已经为您的操作系统分发打包。
使用 pam_chroot。
这是一本很好的手册: http: //www.howtoforge.com/chroot_ssh_sftp_debian_etch
您还可以使用以下命令将用户 shell 设置为 /bin/false:
usermod -s /bin/false 用户名
限制他们 ssh'ing 并且只能 sftp(或 ftp,如果已设置)
我将它用于 sftp usres,以及提到的 chroot 设置(由其他答案涵盖)。