我尝试在 Centos 7 上配置 SFTP,在我的第一台服务器上它运行良好,但是在我的第二台服务器上,当我尝试连接时:
sftp USERNAME@serveripaddress
我有这个错误:
Could not read packet: Connection reset by peer
我用这个方法:
adduser USERNAME
passwd USERNAME
groupadd sftp_only
usermod -aG sftp_only USERNAME
配置 SSH chroot:
vi /etc/ssh/sshd_config
添加评论 :
#Subsystem Sftp /usr/libexec/openssh/sftp-server
在后面添加以下行:
Subsystem sftp internal-sftp
在文件末尾添加:
Group sftp_only Match
ChrootDirectory /var/www
ForceCommand internal-sftp
X11Forwarding No
AllowTcpForwarding No
重新启动 SSH:
service sshd restart
我的 2 台服务器上有相同的 iptables 规则,并且我尝试禁用 iptables。
也许我需要安装一个像 VSFTPD 这样的 FTP 服务器?
谢谢您的帮助,因为我已经好几个小时没有上网了。
答案1
您可以使用提供 SFTP 前端的 proftpd。这样,您就可以在一个守护进程中整合 SFTP、FTP 和 FTP/S。但是,您不能将端口 22 用于 SFTP,否则您将不得不放弃该端口上的 SSH,因为 proftpd 和 sshd 无法为 SFTP 绑定相同的端口。
答案2
猫/var/log/auth.log
May 10 17:08:32 machine sshd[31902]: fatal: bad ownership or modes for chroot directory component "/var/www/html/nextcloud/"
那是我的问题
我们可以关注这个chroot 目录组件的所有权或模式不正确
顺便说一句,我最终使用了绑定解决方案需要帮助 - 限制对 sftp 用户的访问,以便其他用户主页->子文件夹
答案3
更改PasswordAuthentication no
为PasswordAuthentication yes
文件/etc/ssh/sshd_config
并使用service sshd restart
命令重新启动。
答案4
确保主文件夹归 root 所有,而默认文件夹归 sftp 用户所有。例如,当您想将 Incoming 作为用户“guestuser”的主目录时,您应该使用用户 /guestuser/incoming 创建文件夹。Guestuser 文件夹应归 root 所有,而 Incoming 应归 guestuser 所有。