Z.OOL.ネット信託統治領 はてな諸島

こちらは "Z.OOL.ネット信託統治領 はてな諸島" です。

Debian noroot 環境で dropbear を用いて SSH サーバを起動する

はてなブログでは、1年以上振りの御無沙汰です。
全身倦怠感が続いたり、副鼻腔炎になったり、腰部椎間板を痛めたり色々有りますが、
とりあえず何とかなってます。


[BGM]: Yukihiro takahashi - Poisson D'avril

追記 (2018/12/06)

遅くなりましたが、本稿を加筆修正して、2017/04/14 付で Qiita 半島に投稿しました。今後は、本記事の訂正等は、 Qiita 半島の投稿の方で行います。どうか御了承下さい。

qiita.com

はじめに

さて、ここ最近は忙しい割に無駄に時間が余る状況が続いた為か Debian noroot 環境で色々と技術的な Topic が出てきました。

ここで、 Dropbear を用いて Debian noroot 環境で SSH サーバを起動する手法について述べます。詳細については後日改めて纏める予定です。

dropbear 及び openssh-sftp-server のインストール

先ず最初に Debian noroot 環境にパッケージ dropbear, openssh-sftp-server を下記のようにインストールします。

 $ sudo apt-get install dropbear openssh-sftp-server

dropbear の設定

次に、 dropbear の設定ファイルである /etc/default/dropbear を以下のように修正します。

...
# 待ち受けポート番号は必ず 1024 番以上に設定しておく。この場合は 12022 番に設定する。
# ↓
# the TCP port that Dropbear listens on 
DROPBEAR_PORT=12022

# dropbear コマンドに渡す引数を指定する。
# -w オプションで root ログインを抑止。 -s オプションでパスワードを用いたログインを抑止。
# -g オプションでパスワードを用いた root ログインを抑止。 -F オプションでサーバデーモンをフォアグラウンドで起動する。
# -E オプションでデーモンのログを標準エラー出力に出力する。
# ↓
# any additional arguments for Dropbear
DROPBEAR_EXTRA_ARGS="-w -g -s -F -E"
...

そして、 Debian noroot 環境の最後の起動ファイルである /startx.sh に以下の行を追加・修正します。

...
# dbus-daemon を起動する行の直後に dropbear を起動する為の /etc/init.d/dropbear restart を追加する。ログを /var/log/dropbear.log に書き出し、
# /etc/init.d/dropbear restart の行をバックグラウンドで動作させるのを忘れないようにする。
# ↓
fakeroot-tcp /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin dbus-daemon --system
fakeroot-tcp /usr/bin/env PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /etc/init.d/dropbear restart >> /var/log/dropbear.log 2>&1 &
...
# xfce4-session の終了後に /etc/init.d/dropbear stop によって dropbear を終了させる。
# ↓
dbus-launch --exit-with-session sh -c 'xfce4-session ; /etc/init.d/dropbear stop; setsid sh -c "cd /proc/ ; for f in [0-9]* ; do [ \$f = \$\$ ] || kill -9 \$f ; done"' &

以上の設定を行った後は、接続元となる PC 等の端末で SSH 用の公開鍵と秘密鍵を適当な手法で生成し、公開鍵を適当な手法で Debian noroot 環境に送信します。

そして、 Debian noroot 環境に送信された公開鍵をファイル ${HOME}/.ssh/authorized_keys に下記のように書き込みます。

 $ cat /path/to/public_key >> ${HOME}/.ssh/authorized_keys

最後に Debian noroot 環境を再起動し、実際に接続元となる PC 等の端末から Debian noroot 環境にログイン出来ることを確認します。