OpenWrt@RaspberryPi3BでSFTPファイル共有

ファイル共有はSambaよりも簡単でssh接続の設定と一体に管理できるsftpを選んだ
※USBメモリ、USB HDDを使う場合などでWindowsのファイルシステムを使いたい場合は、sambaの方が適している

今回は一般ユーザーのログインを禁止にし、ChrootDirectoryを設定するのでdropbearを無効化、代わりにopensshを入れる
opkg update && opkg install openssh-server
設定ファイルは /etc/ssh/sshd_config 通常通りsshdの設定を記述すればよい
以下を記述(既にSubsytem設定行があればコメント化)
Subsystem       sftp    internal-sftp
ChrootDirectoryに関して、指定ディレクトリとその上の所有者・グループをroot、パーミッションを755以下にしておくこと

ユーザー設定

  • sftp専用のユーザーとグループを作る
groupeadd sftp
useradd -g sftp -m /home/UserName -s /bin/false UserName
passwd UserName
  • /etc/ssh/sshd_configにセクション追加
Match group  sftp
  ChrootDirectory /path/to/chroot_directry
/path/to/chroot_directry以下には適当なディレクトリを作成し、ユーザーごとの専用ディレクトリを作り、ディレクトリの所有者やパーミッションを適宜設定
ChrootDirectoryに関して、指定ディレクトリとその上の所有者・グループをroot、パーミッションを755以上にしておく

起動

/etc/ssh/sshd_configで現在稼働中のdropbearと別のポートを指定しておく
Port 22222
起動する
/etc/init.d/sshd enable
/etc/init.d/sshd start
ローカル端末から Port 22222 にアクセスし、sshログインが可能なことを確認する
成功したらdropbearを止める
/etc/init.d/dropbear stop
/etc/init.d/dropbear disable

USBストレージ

設定

opkg install kmod-usb-storage
opkg block-mount
上記二つに加え、使いたいファイルシステムのカーネルモジュールをインストールしておくのを忘れずに
opkg install kmod-fs-ext4
基本的にはこれでマウント自体は可能なはず。以下一例
mount /dev/sda1 /mnt/USB_Drive1
ルーター起動時の自動マウントの設定については上記公式ガイド参照

パーティション切りやフォーマットをしたい場合は別のツールをインストールする必要がある
これも上記公式のガイドページを参照のこと

クライアント

以下で確認済み
正直、iOSは分からない。なぜならiphoneがない…

ファイル操作目的

 Windows・Mac・Linux:FileZilla
 Android:File Manager

バックアップや同期用途

 Windows・Mac・Linux:FreeFileSync
 Android:foldersync

鍵作成

今回はWindows10のコマンドプロンプトで作成
  • Foldersync(android),Filemanager(android),FileZilla(windows)など
ssh-keygen -t ed25519 
(以下問いに適当に入力)

  • Putty(windows)用は、puttygen.exeに上で作成した秘密鍵を読み込んでppk形式に変換保存

  • ed25519に対応していない端末
例:
ssh-keygen -t rsa -b 4096
※RSA鍵の場合は、バイト長を4096で

鍵設置

sshd_configで設定した場所に保存
/home/User/.sshに作る場合
mkdir -m 700 /home/UserName/.ssh
touch /home/UserName/.ssh/authorized_keys && chmod 600 /home/UserName/.ssh/authorized_keys
上記のように、.sshを700,authorized_keysを600にパーミッションを変更しておく

authorized_keysには先ほど作成した鍵ペアの"公開鍵"の方を記述する
複数の鍵を設置する場合、同ファイルに改行して追記しておけばよい
一行に一つ

各端末の設定

Android:File Manager
 ホーム>リモート>リモートロケーションを追加>SFTP
  設定項目の"その他"をタップして端末に保存した秘密鍵を指定







最終更新:2023年01月13日 02:52