CentOSにsftpをインストールし、新しいグループを追加しました。
groupadd sftp
新しいユーザーが実際に作成されました。
useradd -m sftp_user_1 -s /sbin/nologin -g sftp
パスワードが実際に作成されました。
passwd sftp_user_1
所有者が変わりました:
chown root /home/sftp_user_1
権利を変更します。
chmod 750 /home/sftp_user_1
所有者が変わりました:
chown sftp_user_1:sftp /home/sftp_user_1
ユーザーとグループを確認しました。
id sftp_user_1
[root@centos-24 home]# id sftp_user_1
uid=1000(sftp_user_1) gid=1000(sftp) groups=1000(sftp)
/etc/ssh/sshd_config ファイルが実際に変更されました。
Subsystem sftp /usr/libexec/openssh/sftp-server
に変更されます
Subsystem sftp internal-sftp
ファイルの末尾に追加するかどうか
Match Group sftp
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /home/%u
ForceCommand internal-sftp
サービスを再起動するかどうか
systemctl restart sshd
SFTPサーバーに接続しようとするとエラーが返されます。
[root@centos-24 home]# sftp sftp_user_1@localhost
sftp_user_1@localhost's password:
packet_write_wait: Connection to ::1 port 22: Broken pipe
Couldn't read packet: Connection reset by peer
この問題をどのように解決しますか?
答え1
この段階で
chown root /home/sftp_user_1
SFTPに変更してグループ化する必要があります。
chown root:sftp /home/sftp_user_1
/etc/ssh/sshd_config ファイルに存在するため
Match Group sftp
答え2
クライアントsftp
がリモート側で接続を突然終了したと報告しました。
この場合に最適です。サーバー側ログの読み取り:リモートサーバーが接続を終了した場合は、サーバーログにそのように表示する必要があります。通常、接続も終了します。なぜサーバーはこうしました。
この特定のケースで問題を再現するときに見えるものは次のとおりです。
Sep 23 14:53:52 centos7 sshd[1800]: Accepted password for sftp_user_1 from ::1 port 52166 ssh2
Sep 23 14:53:52 centos7 sshd[1800]: pam_unix(sshd:session): session opened for user sftp_user_1 by (uid=0)
Sep 23 14:53:52 centos7 sshd[1800]: fatal: bad ownership or modes for chroot directory "/home/sftp_user_1" [postauth]
Sep 23 14:53:52 centos7 sshd[1800]: pam_unix(sshd:session): session closed for user sftp_user_1
」chrootディレクトリの所有権またはモードが正しくありません/home/sftp_user_1
。「だからsshd
あなたの権限は満足できませんChrootDirectory
。あなたの場合、chrootユーザーのホームディレクトリと同じです。
sshd_config(5)
マニュアルページによると、設定パラメータが参照するディレクトリはChrootDirectory
ルートが所有し、他の人が書き込めないようにする必要があります。
Chroot ディレクトリ
認証後にchroot(2)のディレクトリパス名を指定します。 sshd(8) はセッションの開始を確認します。パス名のすべてのコンポーネントはいルート所有ディレクトリは他のユーザーやグループは書き込めません。。 chrootの後、sshd(8)は作業ディレクトリをユーザーのホームディレクトリに変更します。
つまり、ChrootDirectoryはユーザーのホームディレクトリにすることはできませんが、少なくとも1つのレベルを超える必要があります。この要件は以前のバージョンよりも高いですsshd
。誰かが chroot 刑務所から脱出する新しい方法を発見した後はこうなりました。新しい要件により、このエスケープ方法は使用できなくなります。
2つの可能な解決策については、別の質問の私の答えを参照してください。https://unix.stackexchange.com/a/542507/258991
答え3
接続に関連するエラーがないかログを確認してください。これを確認する簡単な方法は、次のコマンドを使用することです。
grep -i username /var/log/auth.log
grep -i username /var/log/secure.log
私の場合、ホームディレクトリの損失ログは問題を特定するのに非常に役立ちました。