マウントされたハードドライブに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) はセッションの開始を確認します。パス名のすべてのコンポーネントはルートが所有するディレクトリであり、他のユーザーやグループは書き込めません。。 chrootの後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。 ChrootDirectoryのパラメータは、TOKENSセクションで説明されているトークンを受け入れます。
chrootディレクトリを設定する方法には2つの問題があります。
まず、/media
および/media/linux/MyHDD/NAS/USERNAME
その間のすべてのディレクトリはグローバルに、またはグループ書き込みはできません。モードは777ではなく755でなければなりません。
第二に、/media/linux/MyHDD/NAS/USERNAME
ルートは独自に所有する必要があります。その中のディレクトリとファイルはユーザーが所有できますが、USERNAME
ディレクトリ自体はルートが所有する必要があります。