سناریو: شرکت طرف قرارداد باید فایلهای گزارش را روی سرور بگذارد. نباید بتواند دستور اجرا کند یا بقیهی فایلسیستم را ببیند.
۱. گروه و کاربر
sudo groupadd sftponly
sudo useradd -m -d /srv/sftp/partner1 -s /usr/sbin/nologin -G sftponly partner1
sudo passwd partner1۲. مالکیت پوشهها
شرط chroot در OpenSSH این است که پوشهی ریشهی زندان متعلق به root باشد و کسی جز root حق نوشتن در آن نداشته باشد. بنابراین یک زیرپوشه برای نوشتن میسازیم:
sudo chown root:root /srv/sftp /srv/sftp/partner1
sudo chmod 755 /srv/sftp /srv/sftp/partner1
sudo mkdir /srv/sftp/partner1/upload
sudo chown partner1:partner1 /srv/sftp/partner1/upload۳. پیکربندی SSH
sudo nano /etc/ssh/sshd_config.d/20-sftponly.confMatch Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
X11Forwarding no
PermitTunnel noاگر قبلاً ورود با رمز را بستهاید ولی این کاربر باید با رمز وارد شود، داخل همین بلوک PasswordAuthentication yes را هم اضافه کنید. بهتر است بهجای آن برایش کلید تعریف کنید.
sudo sshd -t && sudo systemctl reload ssh۴. آزمایش
sftp partner1@192.168.10.20
sftp> pwd
sftp> put report.pdf upload/تلاش برای SSH معمولی باید با پیام «This service allows sftp connections only» رد شود:
ssh partner1@192.168.10.20برای ثبت فعالیتهای SFTP در لاگ، ForceCommand internal-sftp -l INFO بنویسید.