概要
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