ブログ

Armadilloを使った製品量産時に各Armadilloにopenssh-serverを効率的にインストールする方法(その2)

at_takuma.fukuda
2021年9月1日 9時00分

Armadilloを使った製品を運用するにあたり、
openssh-serverなどをインストールしてEthernet経由でのログインを検討されることと思います。

各Armadilloシリーズの製品マニュアルでもご案内している通り、
openssh-server のような「パッケージのインストールの際に、自動的に秘密鍵を生成する」パッケージは、
ルートファイルシステムアーカイブのイメージにおいてインストールを行うと、
イメージを書き込んだArmadilloすべてが同一の秘密鍵を利用することとなってしまうため、
Armadillo を起動した後に "apt install" を使って個別にインストールすることが望ましいです。

しかし、製品量産時に個別にインストールを行う事は非常に非効率です。

そこで、効率的にArmadilloへopenssh-serverをインストールしつつ、
各Armadilloが異なる秘密鍵を利用するような手順を2つご紹介します。

この記事では、インストールしたopenssh-serverの秘密鍵を事後に書き換える手段をご紹介します。
もう一つの記事では事前にパッケージファイルをダウンロードし、Armadilloの初回起動時にインストールを行うという手段をご紹介しておりますので、併せてご覧ください。
Armadilloを使った製品量産時に各Armadilloにopenssh-serverを効率的にインストールする方法(その1)

概要

  • ルートファイルシステムアーカイブビルド時にopenssh-serverをインストールする
  • インストール後の初回起動時に秘密鍵情報を書き換える

実施環境

この記事はArmadillo-IoT A6を前提とした記載をしておりますが、
その他のArmadilloシリーズでも同様の手段がご利用可能です。
Armadillo-IoT A6ではルートファイルシステムアーカイブのビルドツールがat-debian-builderであるため、
この記事でもat-debian-builderを使用しています。
他のArmadilloシリーズに適用される場合は、それぞれに適したビルドツールをご利用ください。

パッケージのインストール

ビルド時にopenssh-serverをインストールするするよう指定する

at-debian-builder/aiota6_resources/resources/packages
末尾に以下のように記載する

(前略)

#Bluetooth
bluez

#ここから
#ssh
openssh-server
#ここまで

秘密鍵情報の削除

インストール時に秘密鍵情報が生成されてしまうので、削除しておきます。

at-debian-builder/aiota6_resources/resources/fixup
末尾に以下を記載する。

(前略)
#user change the password at login
passwd --expire root
passwd --expire atmark

#ここから
#delete ssh key
rm -f /etc/ssh/ssh_host_*
#ここまで

秘密鍵情報の再作成

Armadillo起動後に秘密鍵情報を生成させるためのスクリプトファイルを作成します。

at-debian-builder/aiota6_resouces/resources/setup.sh

if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
#秘密鍵情報が所定のディレクトリに無いとき
 dpkg-reconfigure openssh-server
#openssh-serverの再設定を行う
fi
rm setup.sh
#スクリプトファイル自身を削除

スクリプトファイルを実行させるための準備

作成したスクリプトファイルをArmadillo起動直後に実行させるための準備をします。

ファイル準備

作成したスクリプトファイル「setup.sh」をat-debian-builder/aiota6_resources\resoucesに格納します。

ファイルコピー

ビルド時にファイルのコピーと実行権限の付与を行います。

at-debian-builder/aiota6_resources\resouces/fixup
末尾に以下のように記載する

(前略)
#delete ssh key
rm -f /etc/ssh/ssh_host_*

#ここから
cp /resources/setup.sh /root/setup.sh
#ファイルコピー
chmod +x /root/setup.sh
#実行権限付与
#ここまで
自動実行設定

起動時に上記スクリプトを自動実行させるために、
rc.localファイルへ、スクリプトファイルを呼び出すように記載します。

at-debian-builder/aiota6_resources/resources/rc.local

!/bin/sh

if { -f /sys/calss/leds/red/brightness }; then
	echo 0 > /sys/class/leds/red/brightness
fi

#ここから
/root/setup.sh
#ここまで

実行

以上でビルドしたルートファイルシステムをインストールディスク等で書き込んだ後にArmadilloを起動すると、
秘密鍵情報が生成されます。
ルートファイルシステムのビルド、書き込みの手順については各製品のマニュアルをご参照ください。