環境
grep "PRETTY_NAME" /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
目的
USBで接続したexFATでフォーマットされているストレージにSFTPでアクセスしたい。
前提条件
ストレージのファイルシステムは「exFAT」
sftpクライアントは「WinSCP」
手順
- USBストレージを自動マウントするように設定
- sftp専用ユーザを作成
- 公開鍵認証でsftpユーザがアクセスできるようにする
- WinSCPからsftpでアクセスする
USBストレージを自動マウントするように設定
sftp専用ユーザを作成
SFTP以外は操作させたくないため、ログイン禁止ユーザを作成する。
ユーザ名は今回は「sftp-user」とする。
$ sudo useradd sftp-user -m -p sftp-user -s /usr/sbin/nologin
公開鍵認証の設定
アルゴリズムは意識の高いed25519にする。
パスワードは念の為、設定しておく。総当たりを回避できれば良いので、30文字程度で良さそう。
# 鍵作成
ssh-keygen -t ed25519 -N "<ココにパスワードを記載>" -C "sftp-user" -f "./id_ed25519"
# 公開鍵を追記する
$ sudo mkdir -p /home/sftp-user/.ssh
$ sudo sh -c "cat ./id_ed25519.pub >> /home/sftp-user/.ssh/authorized_keys"
$ sudo chown sftp-user:sftp-user /home/sftp-user/.ssh
$ sudo chown sftp-user:sftp-user /home/sftp-user/.ssh/authorized_keys
$ sudo chmod 600 /home/sftp-user/.ssh/authorized_keys
秘密鍵はSSHクライアントのSCP機能を使って、ローカルに保存するのが良さそう。
sftpの設定
sftpはsshでやり取りするため、「/etc/ssh/sshd_config」を編集します。
以下のように設定します。
Match group sftp-user
ChrootDirectory /media/sftp
ForceCommand internal-sftp
対象グループは追加した「sftp-user」としました。
ディレクトリは「/media/sftp/」とするようにしました。
sftpを有効にする場合、親ディレクトリは所有者が「root」、パーミッションは「755」でないとアクセスできません。
$ sudo chown root:root /media/sftp
$ sudo chmod 755 /media/sftp
$ ls -la /media/
drwxr-xr-x 3 root root 4096 5月 22 00:59 .
drwxr-xr-x 23 root root 4096 1月 28 02:07 ..
drwxr-xr-x 3 root root 4096 5月 22 00:59 sftp
設定ができたら、sshを再起動させます。
$ sudo systemctl restart ssh
USBストレージの設定
対象ストレージのファイルシステムは「exFAT」です。
exFATは権限や所有者という概念がありません。
そのため、マウント時に設定します。
sftp専用ユーザのGIDを確認
以下のように確認します。
$ id sftp-user
uid=1003(sftp-user) gid=1004(sftp-user) groups=1004(sftp-user)
uidは「1003」で、gidは「1004」でした。
この取得したuidとgidをマウントオプションに追加します。
ついでに、マウント先を「/media/sftp/usb1」に変更します。
以下のように設定しました。
$ grep "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" /etc/fstab
PARTUUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX /media/sftp/usb1 exfat nofail,uid=1003,gid=1004 0 0
設定完了後、再マウントをして設定が反映されているか確認します。
$ sudo umount -a
$ sudo mount -a
$ ls -la /media/sftp
合計 1032
drwxr-xr-x 3 root root 4096 5月 22 00:59 .
drwxr-xr-x 3 root root 4096 5月 22 00:59 ..
drwxrwxrwx 1 sftp-user sftp-user 1048576 1月 1 1970 usb1
きちんと「sftp-user」でマウントされていますね。
WinSCPからsftpでアクセスする
通常どおり、秘密鍵でアクセスする時と同じ手順でアクセス可能です。
転送プロトコルは「SFTP」としてください。
以上で設定完了です。