Linux
archLinux

Arch LinuxのSSHサーバにDropbearを使う

概要

Linux環境でSSHサーバといえばOpenSSHになると思いますが、せっかくのArch Linuxで真っ新な状態なので、今回はDropbearを使ってみようと思います。

Dropbearは今まで知らなかったのですが、pacman -Ss sshで見つけて興味をひかれました。

個人的に初物なので設定に時間がかかるかと思いましたが、とても簡単でしたので、とりあえず手っ取り早くSSHデーモンを立てたい場合はDropbearも有力な選択肢かもしれません。

Dropbearとは

pacmanコマンドで見れる説明は、下記のようになっています。

community/dropbear 2017.75-1 [installed]
    Lightweight replacement for sshd

OpenSSHの代替となる軽量なSSHサーバ、ということですね。

公式サイトには、「Dropbear is particularly useful for "embedded"-type Linux (or other Unix) systems, such as wireless routers.」とあり、Raspberry Piで使われたりするようです。

インストール方法

Arch Linuxのリポジトリに含まれているため、pacmanコマンドでインストールできます。

# pacman -S dropbear

動かす

systemdのユニットファイルもインストール時に入ってくるので、簡単です。

# systemctl start dropbear.service

ついでに自動起動の設定もします。

# systemctl enable dropbear.service

動作確認

まず、ユーザの公開鍵を設置します。

ここは、OpenSSHを使った場合と変わりません。~/.ssh/authorized_keysに設置しましょう。

パーミッションもいつも通り、厳しめにしておいたほうがよいでしょう。つまり、~/.sshは700、~/.ssh/authorized_keysは600です。
(authorized_keysが644でも接続できたので、ここのチェックはOpenSSHほど厳密ではないのかもしれません)

あとは、いつも通りの方法で接続してみてください。ポートもいつも通り22です。

デフォルト設定をカスタマイズ

設定ファイルは無いようですが、基本的な設定は起動コマンドのオプションで指定できます。

デフォルトでは、下記のようになっています。

# grep 'ExecStart' /usr/lib/systemd/system/dropbear.service
ExecStart=/usr/bin/dropbear -F -P /run/dropbear.pid -R

私は、rootユーザによるログインとパスワード認証でのログインを禁止したかったので、下記のように変更しました。(オプションの意味は後述)

# grep 'ExecStart' /usr/lib/systemd/system/dropbear.service
ExecStart=/usr/bin/dropbear -F -P /run/dropbear.pid -R -w -s

設定を効かせます。

# systemctl daemon-reload
# systemctl restart dropbear.service

一行目は、ユニットファイルを修正したときに必要なコマンドです。二行目は、サービスの再起動です。(reloadはできませんでした。)

restartなので、今接続されているSSHコネクションはすべて切断される点に注意してください。

その他の設定可能な項目

-hで確認できます。

# dropbear -h
Dropbear server v2017.75 https://matt.ucc.asn.au/dropbear/dropbear.html
Usage: dropbear [options]
-b bannerfile   Display the contents of bannerfile before user login
                (default: none)
-r keyfile  Specify hostkeys (repeatable)
                defaults:
                dss /etc/dropbear/dropbear_dss_host_key
                rsa /etc/dropbear/dropbear_rsa_host_key
                ecdsa /etc/dropbear/dropbear_ecdsa_host_key
-R              Create hostkeys as required
-F              Don't fork into background
-E              Log to stderr rather than syslog
-m              Don't display the motd on login
-w              Disallow root logins
-s              Disable password logins
-g              Disable password logins for root
-B              Allow blank password logins
-j              Disable local port forwarding
-k              Disable remote port forwarding
-a              Allow connections to forwarded ports from any host
-p [address:]port
                Listen on specified tcp port (and optionally address),
                up to 10 can be specified
                (default port is 22 if none specified)
-P PidFile      Create pid file PidFile
                (default /var/run/dropbear.pid)
-i              Start for inetd
-W <receive_window_buffer> (default 24576, larger may be faster, max 1MB)
-K <keepalive>  (0 is never, default 0, in seconds)
-I <idle_timeout>  (0 is never, default 0, in seconds)
-V    Version

参考文献