努力在已安装的 HDD 上设置 SFTP 服务器(client_loop:发送断开连接:连接重置)

努力在已安装的 HDD 上设置 SFTP 服务器(client_loop:发送断开连接:连接重置)

尝试在已安装的硬盘驱动器上设置 SFTP 服务器,并遵循大量教程中的说明,在登录时始终收到“client_loop:发送断开连接:连接重置”。

我首先创建一个名为 sftp 的组,然后将用户分配给该组,其主目录位于 HDD 中:

sudo useradd -g sftp -d /media/linux/MyHDD/NAS/USERNAME -s /sbin/nologin USERNAME-nas

sudo passwd USERNAME

其中 USERNAME 是我的个人用户名

然后,我尝试将 USERNAME 文件夹之上的所有内容的所有权设置为 root,并将 USERNAME 文件夹设置为用户:

sudo chown -R root:root /media

sudo chown -R USERNAME:sftp /media/linux/MyHDD/NAS/USERNAME

编辑 sshd_config 文件以包含:

Subsystem sftp internal-sftp

Match Group sftp
ChrootDirectory /media/linux/MyHDD/NAS/USERNAME
ForceCommand internal-sftp
AllowTcpForwarding no
X11 Forwarding no

不要忘记重新启动 sshd 服务

sudo systemctl restart sshd

由于我想在我的 Linux 计算机上访问此文件夹,因此我将媒体文件夹的权限设置为 777

sudo chmod -R 777 /media

完成所有这些后,当尝试登录 sftp 并输入密码时,我会看到:

sftp -P PORTNO USERNAME@IP

client_loop: send disconnect: Connection reset
Connection closed

我不知道这是权限问题还是所有权问题。我在这方面花了很长时间,似乎无法弄清楚,所以任何帮助将不胜感激。

答案1

ChrootDirectory /media/linux/MyHDD/NAS/USERNAME
[...]
sudo chown -R USERNAME:sftp /media/linux/MyHDD/NAS/USERNAME
[...]
sudo chmod -R 777 /media

“ChrootDirectory”功能要求 chroot 目录及其父目录具有某些所有权和权限:

Chroot目录
指定身份验证后 chroot(2) 的目录路径名。在会话启动时 sshd(8) 检查路径名的所有组成部分都是 root 拥有的目录,任何其他用户或组都无法写入。 chroot 后,sshd(8) 将工作目录更改为用户的主目录。 ChrootDirectory 的参数接受 TOKENS 部分中描述的令牌。

设置 chroot 目录的方式存在两个问题:

首先,/media/media/linux/MyHDD/NAS/USERNAME以及其间的所有目录都不能是全局或组可写的。它们需要是模式 755 而不是 777。

其次,/media/linux/MyHDD/NAS/USERNAME它本身必须由 root 拥有。其中的目录和文件可以由用户拥有,但USERNAME目录本身必须由root拥有。

相关内容