ブログ

Armadillo Base OS:量産時にSSHの鍵を生成する方法(スクリプト実行編)

at_shinya.matsumoto
2023年6月30日 19時26分

本ブログでは量産時に固有のSSHの鍵を生成する方法についてご説明します。

インストールディスクで固有のSSHの鍵を作成する方法は下記を参照下さい。
Armadillo Base OS:量産時にSSHの鍵を生成する方法(インストールディスク編)

インストールディスクを使わず、swupdateで量産用として書き込む場合には本ブログの
内容が参考になると思います。また、swupdateで量産用として書き込む場合には下記の
ブログも参考にして頂ければと思います。
Armadillo Base OS:開発したArmadilloをインストールディスクを使わずに複製する

実施手順

既にインストールディスク作成(make-installer)を実行する前にsshdが有効化している場合は
sshdの無効化・削除及び鍵の削除を行います。まだsshdの有効化や鍵の生成をしていない
場合はスキップして次の2.初回起動時にsshdと鍵を生成するへ進んでください。

《注意》
 sshdは起動時に鍵がない場合自動生成しますが、persist_fileで保存しない限りは次回起動時には
 都度作り直す事になります。よって、ここでは1度だけ鍵をつくる為にsshdを一旦無効化しています。

1.sshdと鍵を削除する

以下の順に実行します。

sshdを止める
[Armadillo]# rc-service sshd stop

sshdをサービスから消す
[Armadillo]# rc-update delete  sshd

sshdの実行スクリプトをeMMCから消去
[Armadillo]# persist_file -d /etc/runlevels/default/sshd

sshの鍵をeMMCから消去
[Armadillo]# persist_file -d /etc/ssh/*key*

これで、Armadilloからsshdと鍵を消去しました。

2.初回起動時にsshdと鍵を生成する

ここではsshの鍵がない場合を初回起動と判定しています。
鍵が無い場合にsshdを有効化、鍵の生成を行うスクリプトを作成します。
鍵が生成された後は本スクリプトが実行されることはありません。

/etc/local.d/ に ssh.start という以下のスクリプトを作成します。(名前は任意)

#!/bin/sh

if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
#sshdサービスの有効化
   rc-update add sshd
   rc-service sshd start
#sshd設定保存
   persist_file /etc/runlevels/default/sshd
#鍵の保存
   persist_file -r /etc/ssh
fi

次に作成したスクリプトに実行権限とeMMCへの保存(永続化)を行います。

[armadillo]# chmod +x /etc/local.d/ssh.start
[armadillo]# persist_file /etc/local.d/ssh.start

以上で、次回起動時に自動でsshdを有効化、鍵生成+永続化が行われます。
本スクリプト実行前の状態でmake-installerを実行頂ければ個体毎に固有の鍵を生成する事が出来ます。

《補足》
 初回起動時にsshの鍵を生成する為、CPU能力によっては少し時間が掛かる場合があります。