我正在尝试配置 SFTP,以便我的用户可以访问他们自己的站点文件夹(使用 PSFTP/FileZilla)。我使用 Vagrant、CentOS7、NGINX 和 .sh 文件。
这是我的 bootstrap.sh,用于创建我的一个用户。
#Make Group for SFTP
sudo groupadd sftpusers
#Make Website folder and SFTP Users
JS_WWW="/usr/share/nginx/html/jeroensteen"
sudo useradd -g sftpusers -d $JS_WWW -s /sbin/nologin -p jeroensteen jeroensteen
sudo chown jeroensteen:sftpusers $JS_WWW
sudo chown nginx:nginx $JS_WWW
#Configure SFTP
sudo sed -i "s@/usr/libexec/openssh/sftp-server@internal-sftp@" /etc/ssh/sshd_config
sudo echo "Match Group sftpusers" > /etc/ssh/sshd_config
sudo echo " ChrootDirectory /usr/share/nginx/html/%u" > /etc/ssh/sshd_config
sudo echo " ForceCommand internal-sftp" > /etc/ssh/sshd_config
sudo systemctl restart sshd
当我尝试使用 Putty 在 127.0.0.1 上以用户“vagrant”的身份进行常规 SSH 时,putty 关闭了。我甚至无法输入密码。
当我尝试使用 PSFTP 通过执行“打开 10.0.0.100”来访问 SFTP 时:我以“[电子邮件保护]“使用我的通行证,但我收到:“拒绝访问”。
如何为我的用户配置 SFTP?Putty 关闭而我无法访问,这是怎么回事?
答案1
您应该sudo tail -f /var/log/secure
在观察该情况的同时运行并再次尝试 sftp。这将向您显示来自 sshd 服务器的错误,这些错误不允许此 sftp 访问。
从您执行的步骤来看,在将 $JS_WWW 的所有权设置为 jeroensteen:sftpusers 后,您将其更改为 nginx:nginx。您是否想将用户设置为 jeroensteen,将组设置为 nginx?jeroensteen 用户是否有权访问 $JS_WWW 目录?您从未显示权限是什么。如果权限不是全球可读和全球可执行的,则登录可能会由于 $JS_WWW 上的权限问题而失败。您可以使用sudo su -s /bin/sh jeroensteen
切换到该用户并查看它可以访问什么。
就我个人而言,当我尝试完成你正在做的事情时,我会保留 sshd_config,而是安装发送从电力供应处并将用户的 shell 设置为该值。