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以下にしておくこと
ユーザー設定
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がない…
ファイル操作目的
バックアップや同期用途
鍵作成
今回はWindows10のコマンドプロンプトで作成
- Foldersync(android),Filemanager(android),FileZilla(windows)など
ssh-keygen -t ed25519
(以下問いに適当に入力)
- Putty(windows)用は、puttygen.exeに上で作成した秘密鍵を読み込んでppk形式に変換保存
例:
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