0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Raspbianに接続したUSBをSFTPでアクセスできるようにしたメモ

Posted at

環境

grep "PRETTY_NAME" /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"

目的

USBで接続したexFATでフォーマットされているストレージにSFTPでアクセスしたい。

前提条件

ストレージのファイルシステムは「exFAT」
sftpクライアントは「WinSCP」

手順

  1. USBストレージを自動マウントするように設定
  2. sftp専用ユーザを作成
  3. 公開鍵認証でsftpユーザがアクセスできるようにする
  4. WinSCPからsftpでアクセスする

USBストレージを自動マウントするように設定

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」としてください。

以上で設定完了です。

参考記事

2017年版 SSH公開鍵認証で使用する秘密鍵ペアの作り方

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?