Armadilloフォーラム

量産機にSSHの鍵をコピーしたい

y.shimizu

2025年5月12日 17時51分

==========
製品型番:Armadillo-IoT A6E
Debian/ABOSバージョン:3.21.3-at.3
カーネルバージョン:5.10.235-0-at
3G/LTE モジュール情報 (Debianのみ):
その他:
==========

お世話になっております。
量産機にhost keyをコピーしたいと考えています。
SSH接続の際に、量産機ごとに固有の鍵でなく、同じ鍵を使用してログインしたいと考えています。

量産機にコピー後、新しく鍵が生成されていました。
方法を教示いただけませんか。

# マスターSSHホスト鍵作成時
rc-update add sshd
rc-service sshd start
persist_file /etc/runlevels/default/sshd
persist_file -r /etc/ssh
コメント

at_dominique.m…

2025年5月12日 18時11分

y.shimizuさん

お世話になっています、
マルティネです。

> 量産機にhost keyをコピーしたいと考えています。
> SSH接続の際に、量産機ごとに固有の鍵でなく、同じ鍵を使用してログインしたいと考えています。
>
> 量産機にコピー後、新しく鍵が生成されていました。
> 方法を教示いただけませんか。

ホストキーを共有する理由を教えていただけますでしょうか。

Armadillo に接続する際に Armadillo を認証したいと思いますが、量産に鍵を共有するとどれかの Armadillo から鍵を奪えたら全ての Armadillo への接続の内容を復号できるようになってしまいますので、今どきの規則で考えると NG になると考えています。

Armadillo を認証したい場合は、手間ですが、インストラーの任意実行機能で生成された host key の public key をログできますが、いかがでしょうか。
具体的に、 https://armadillo.atmark-techno.com/resources/software/armadillo-iot-a6… の「Alpine Linuxルートファイルシステムビルドツール」にある common/image_installer/installer_overrides.sh.sample では IP アドレスを固定してログしていますが、 ssh-keygen -l -f /etc/ssh/ssh_host_ed25519_key 等で fingerprint を取得できれば記録可能です。

認証ではなく、複数の Armadillo に接続する際の sshd のワーニングが気になる場合は PC の .ssh/config のチェックを無効化できます(StrictHostKeyChecking no + UserKnownHostsFile /dev/null 等)

どうしてもホスト鍵を共通したい場合は同じビルドツールの common/image_common/lib/rc/sh/functions-atmark.sh ファイルを参考にすれば方法が分かると思いますが、セキュリティ上にサポートできませんのでこれ以上説明できません。

よろしくお願いします

マルティネさん

今どきの規則では、そう考えるのが正しいです。

## ホストキーを共有する理由
複数のArmadilloに同一のIPアドレスを設定しています。
他のArmadilloにアクセスするたびに、以下のエラーが出て、PC内の ~/. ssh/configの内容を削除しなけらばなりません、。
運用の観点から、やりづらいというのがあります。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

> 認証ではなく、複数の Armadillo に接続する際の sshd のワーニングが気になる場合は PC の .ssh/config のチェックを無効化できます(StrictHostKeyChecking no + UserKnownHostsFile /dev/null 等)

この手順を試してみたいと思います。

訂正です。
毎回削除しなければいけないのは、~/ssh/configではなく、~/ssh/known_hostsの内容です

at_dominique.m…

2025年5月12日 18時58分

マルティネです。

> 毎回削除しなければいけないのは、~/ssh/configではなく、~/ssh/known_hostsの内容です

はい、StrictHostKeyChecking no だけですと違うホスト鍵の場合にワーニングが出て接続はできますが例えばポートフォーワーディングを使えなくなります。
UserKnownHostsFile も /dev/null 等の変更できない空のファイルに設定すると、「追加されました」ってメッセージが表示されますが利用する分に支障はなくなります。

> 複数のArmadilloに同一のIPアドレスを設定しています。

なるほど、load-balancer 等で TLS 鍵を共有していると同じくその場合は共有化はありかもしれませんが、TLSと違ってホスト鍵を頻繁に再生性しないのでそれでも別の鍵ですべての Armadillo の鍵を登録しておくなどの方向がいいかと思います。

例えば、 ssh-keyscan -t rsa,ecdsa,ed25519 -q [ip] を何回か実行して、 sort -u 等で複製を削除してまとめて .ssh/known_hosts に追加するとどれかの鍵に一致する場合にエラーがでなくなりますので、頻繁にインストールしない場合はこの方法もありだと思います。

お手数ですがよろしくお願いします

>例えば、 ssh-keyscan -t rsa,ecdsa,ed25519 -q [ip] を何回か実行して、 sort -u 等で複製を削除してまとめて .ssh/known_hosts に追加するとどれかの鍵に一致する場合にエラーがでなくなりますので、頻繁にインストールしない場合はこの方法もありだと思います。

数十台を管理する予定かつ、複数人で運用する予定であります。
人が変わるたびに行うことを考えると、別の方法を取りたく思います。

量産時にコピーする場合、swupdate_preserve_filesに書きこむとなるかと思い、
presist_files -pオプションで、/etc/ssh/*key*を指定しましたが、量産機へのコピーがなされておりませんでした。

①swupdate_preserve_filesに、書き込んでもコピーできないのでしょうか。
②また、scpなどでコピーすることも考えましたが、数十台に及びそうであり、量産時にコピーする何か方法はないでしょうか。

よろしくお願いいたします。