努力在已安裝的 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擁有。

相關內容