本ブログでは量産時に固有の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能力によっては少し時間が掛かる場合があります。