..png)
마운트된 하드 드라이브에 SFTP 서버를 설정하려고 시도하고 여러 튜토리얼의 지침을 따랐을 때 로그인 시 항상 "client_loop: send disconnect: Connection Reset"이 표시됩니다.
먼저 sftp라는 그룹을 만든 다음 HDD의 홈 디렉터리를 사용하여 해당 그룹에 사용자를 할당했습니다.
sudo useradd -g sftp -d /media/linux/MyHDD/NAS/USERNAME -s /sbin/nologin USERNAME-nas
sudo passwd USERNAME
USERNAME은 내 개인 사용자 이름입니다.
그런 다음 USERNAME 폴더 위의 모든 항목에 대한 소유권을 루트로 설정하고 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)는 다음을 확인합니다.경로 이름의 모든 구성 요소는 다른 사용자나 그룹이 쓸 수 없는 루트 소유 디렉터리입니다.. chroot 후에 sshd(8)는 작업 디렉토리를 사용자의 홈 디렉토리로 변경합니다. ChrootDirectory에 대한 인수는 TOKENS 섹션에 설명된 토큰을 허용합니다.
chroot 디렉토리를 설정하는 방법에는 두 가지 문제가 있습니다.
첫째, /media
, /media/linux/MyHDD/NAS/USERNAME
및 그 사이의 모든 디렉토리는 전체 또는 그룹 쓰기가 가능하지 않습니다. 777이 아닌 755 모드여야 합니다.
둘째, /media/linux/MyHDD/NAS/USERNAME
루트가 자신을 소유해야 합니다. 그 안의 디렉터리와 파일은 사용자가 소유할 수 있지만 디렉터리 USERNAME
자체는 루트가 소유해야 합니다.