1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

セキュアサーバに、なりたいな「ハイ!rclone crypt」①QEMUでDebianを動かしてみる

Last updated at Posted at 2025-12-18

📚 シリーズ目次

本シリーズは、作業の一部で Linux Mint 22.2 Cinnamon Edition を使用します。
Windows 11 での作業手順も併記しています。)

1. はじめに

昨今のAndroid OSでは、SDカード全体を暗号化する機能が廃止に向かっている模様。SDカードは比較的安価にストレージ容量を確保できて便利なのですが、スマホ紛失時の情報漏洩リスクを考えるとどうしたものかと頭を抱えていました。そんな日々に差し込んだ一筋の光、「gocryptfs」の運用を試して…ダメだぁ。マウントができない。

Android 10から更新されたFUSEのアクセス制御により、root化していないスマホはマウントで失敗するとのこと。これは、マウントへの執着を捨てきれなかったエンジニアが、透過的な暗号化フォルダアクセスを求めて右往左往したお話です。

本記事では、非rootのスマホに仮想マシンを導入し、Android OS上でネイティブなLinuxサーバを稼働させることを目指します。

2. 暗号化フォルダについて

2.1 透過的なアクセスとは

gocryptfsを使用すると、ローカルの暗号化フォルダを復号化せずに、仮想的な平文フォルダを通して読み書きできます。この読み書きは「透過的」と表現されます。では、「透過的」ではないアクセスはどうなるのか。以下のようになります。

運用上は、必要なときに必要なファイルだけという訳にもいかないので、フォルダごと復号化してからのアクセスになると思います。スクリプトで自動化できたにしても、デメリットとリスクが山盛りなので避けたい。でも、スマホもroot化したくない。

2.2 仮想マシンでのマウント

仮想マシン上では、Androidから縛られずにOSが稼働できるため、マウントが使えます!Androidのファイルシステム上にある暗号化フォルダをSFTP経由で仮想マシンにマウントし、さらにgocryptfsを使用することで透過的なアクセスを実現できます。が、rclone cryptだともっと単純にできるので、今回はrclone cryptを採用します。

3. Termuxのセットアップ

3.1 Termuxのインストール

まずは、Termuxのセットアップから始めます。以下のサイトを開いてスクロールしていくと、F-Droidクラインアントのインストールがお勧めされています。「F-DROIDをダウンロード」ボタンをタップし、F-Droid.apk をダウンロードしてインストールしてださい。スマホから警告が出ますが、適宜対応くださいw

インストールできたら、F-Droidを開いて「Termux」を検索します。何やらいっぱい出てきますが、説明に以下の文言があるものを選んでインストールします。Termuxはサーバ運用するので、インストール後はバッテリの最適化をオフにすると良いでしょう。

  • パッケージを伴ったターミナル・エミュレーター

3.2 パッケージの更新

Termuxがインストールできたら、ソフトウェアソースを選択してパッケージを更新します。Termuxを起動して以下のコマンドを実行すると。設定画面が表示されます。

Termux
termux-change-repo

「Single mirror」をSpaceキーで選択して、Enterキーをタップしてください。

Screenshot from 2025-12-18 09-32-14.png

「KuronekoServer」をSpaceキーで選択したら、Enterキーをタップします。

Screenshot from 2025-12-18 09-35-24.png

ソフトウェアソースを選択するとパッケージ情報が更新されますので、以下のコマンドを実行してパッケージをバージョンアップします。途中、確認のプロンプトが出ますが、すべてデフォルト動作で問題ないのでEnterキーをタップしてください。

Termux
pkg upgrade

3.3 SSH接続の準備

スマホ画面からポチポチではなかなか話も進まないので、PCからSSHで接続できるようにしてしまいましょう。以下のコマンドで「OpenSSH」をインストールします。

Termux
pkg install openssh

続いて、接続用のパスワードを設定します。

Termux
passwd

接続に必要なユーザ名とIPアドレスは、以下のコマンドで確認できます。

Termux
whoami
ifconfig

最後に、SSHデーモンを起動します。

Termux
sshd

3.4 SSH鍵認証の設定

PCのターミナルで以下のコマンドを実行して、SSH認証用の鍵ペアを作成します。作成先フォルダとファイル名はデフォルトでOKです。パスフレーズも空で良いでしょう。~/.ssh に秘密鍵 id_ed25519 と公開鍵 id_ed25519.pub が作成されます。サーバ側で管理しやすいように、公開鍵末尾にホスト名を付与しています。

Linux PC
ssh-keygen -t ed25519 -C "$(hostname)"

Windowsも同じコマンドで作成します。作成先は C:\Users\ユーザ名\.ssh です。

PCのターミナルから以下のコマンドを実行すると、スマホのTermuxに接続できます。初回接続時は、未知の接続先として警告が出ますので yes と入力してください。

Linux PC
ssh u0axxx@192.168.x.x -p 8022

PCからSSHで接続できたら、TermuxにSSH鍵認証を設定します。以下のコマンドで authorized_keys ファイルを開いてください。PCで作成した id_ed25519.pub をテキストエディタで開いて、中身の文字列をまるっと authorized_keys にコピペで追加します。追加したら「Ctrl + O」からの「Enter」で保存し、「Ctrl + X」で終了します。

Termux
nano ~/.ssh/authorized_keys

追加後は、PC側のSSHクライアント設定ファイルを準備します。config ファイルを作成して、以下のように記載してください。

Linux PC ~/.ssh/config
Host termux-ssh
  HostName 192.168.x.x
  User u0axxx
  Port 8022
  IdentityFile ~/.ssh/id_ed25519

Windowsも同じ記載で機能します。作成先は C:\Users\ユーザ名\.ssh です。

これで、以降は以下のコマンドで接続できるようになります。パスワードは不要です。

Linux PC
ssh termux-ssh

3.5 SSHデーモンの起動設定

今回は常時起動ではなく、使用したいときだけ起動する運用方法とします。.bashrc.bash_logout を以下のように作成してください。これでTermuxの起動時と終了時に、SSHデーモンも起動と終了することができます。Termux終了時は、exit コマンドまたは「Ctrl + D」で終了してください。

Termux
nano ~/.bashrc
Termux ~/.bashrc
if [[ ! $SSH_CONNECTION ]]; then
  termux-wake-lock
  sshd
fi

SSH接続時のシェルプロンプトを改変する場合はこちら。

Termux ~/.bashrc
if [[ ! $SSH_CONNECTION ]]; then
  termux-wake-lock
  sshd
else
  USER="termux"
  HOSTNAME="Redmi-12-5G"
  PS1="\[\e]0;$USER@$HOSTNAME: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]$USER@$HOSTNAME\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
fi
Termux
nano ~/.bash_logout
Termux ~/.bash_logout
if [[ ! $SSH_CONNECTION ]]; then
  pkill sshd
  termux-wake-unlock
fi

4. Debianの起動

4.1 QEMUのインストール

TermuxでDebianを稼働させるにはQEMUが必要です。今回はArm64版を使用します。以下のコマンドでインストールしてください。

Termux
pkg install qemu-common
pkg install qemu-system-aarch64-headless

4.2 Debianのダウンロード

Debianの公式サイトからQEMU用のクラウドイメージをダウンロードして使用します。インストール作業なしで起動できるようなので、手間がなくて良いですね。以下のコマンドで、Debian用にフォルダを作成してクラウドイメージをダウンロードします。

Termux
mkdir -p ~/qemu/debian-arm64
cd ~/qemu/debian-arm64
curl -LO \
  https://cloud.debian.org/images/cloud/trixie/latest/debian-13-nocloud-arm64.qcow2

4.3 QEMUの実行

それでは、いよいよDebianを起動してみます。CPUのコア数とメモリは、Amazon EC2のインスタンスタイプ「t4g.micro」を参考にしています。以下のコマンドを実行すると、CLI環境のDebianが起動します。

Termux
qemu-system-aarch64 \
  -machine virt \
  -cpu cortex-a55 \
  -m 1024 \
  -smp 2 \
  -bios /data/data/com.termux/files/usr/share/qemu/edk2-aarch64-code.fd \
  -drive if=none,file=debian-13-nocloud-arm64.qcow2,id=hd0,format=qcow2 \
  -device virtio-blk-device,drive=hd0 \
  -netdev user,id=net0,hostfwd=tcp::8122-:22,hostfwd=tcp::8443-:443 \
  -device virtio-net,netdev=net0 \
  -nographic

-cpu はお使いのスマホに合わせて設定してください。上記の cortex-a55 は「Snapdragon 4 Gen 2」搭載スマホ向けの設定です。

…画面を眺めていると、ターミナル上でDebianの起動プロセスがもりもり動いているので、なんというか不思議な感覚になります。ほどなくしてログインプロンプトが表示されるので、root でログインしてください。

Debian
localhost login: root

今回はここまでです。poweroff コマンドでDebianをシャットダウンします。

Debian
root@localhost:~# poweroff

5. おわりに

QEMU上のDebianは、思っていたよりもだいぶ素直に動きました。QEMUの起動はオプション山盛りですが、運用してみて必要なら見直す方向で。次の記事では、暗号化フォルダを作成してDebianのファイルシステム上にマウントします。


◀️ 前の記事 次の記事 ▶️
Core 2 DuoでもMintしたい!④Gitサーバよ、ついでに稼働する? セキュアサーバに、なりたいな「ハイ!rclone crypt」②rcloneで暗号化フォルダを作る
1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?