この記事は#NervesJP Advent Calendar 2021の11日目です。
10日目は @the_haigo さんの「Nerves で GPS Loggerを作ってみた」でした。
背景
これまで、NervesにSSHする場合はSSHの鍵ペアを作成後 config/target.exs
に公開鍵を登録していると思います。
これはこれで安全でいいとは思うんですが、Nervesのデモやハンズオン、複数人で利用しようとしている時に、SSH鍵の管理したくないなぁとか簡単にログイン情報共有したいなぁと思う場面が出てきます(よね)。
そこでいつの頃からか、 nerves_ssh
に Username/password authentication
という機能が追加されていたのでやってみました。
前提
- Nervesをコンパイル、SSHログインできる環境を構築できている
設定
config/target.exs
に設定を追記します。
authorized_keys
はSSH公開鍵を登録する箇所(こちらはおまけ)、
user_password
はユーザ名/パスワードでSSHログインの設定を記入する箇所になります。
以下のような設定をすると、SSH公開鍵にマッチする秘密鍵がPCに保存されてない場合、ユーザ名/パスワードでSSHログインできるようになります。
ユーザ名 | パスワード |
---|---|
kazuma | nishiuchikazuma |
aiueo | kakikukeko |
config :nerves_ssh,
authorized_keys: [
"SSH公開鍵A",
"SSH公開鍵B",
"SSH公開鍵C"
]
config :nerves_ssh,
user_passwords: [
# {"username", "password"},
{"kazuma", "nishiuchikazuma"},
{"aiueo", "kakikukeko"}
]
確認
今回は aiueo
ユーザでログインしてパスワードでログインできることを確認します。
❯ ssh aiueo@192.168.5.156
SSH server
Enter password for "aiueo"
(aiueo@192.168.5.156) password: ※ここで「kakikukeko」と入力
Interactive Elixir (1.12.3) - press Ctrl+C to exit (type h() ENTER for help)
████▄▄ ▐███
█▌ ▀▀██▄▄ ▐█
█▌ ▄▄ ▀▀ ▐█ N E R V E S
█▌ ▀▀██▄▄ ▐█
███▌ ▀▀████
yokogawa 0.1.0 (2418023f-ac9f-5cb1-7ac8-19ee000769e3) arm f3rp7x
Uptime : 1 minutes and 3 seconds
Clock : 2021-12-04 04:58:31 UTC
Firmware : Valid (B) Applications : 32 started (mdns_lite not started)
Memory usage : 44 MB (4%) Part usage : 36 MB (0%)
Hostname : nerves-00000000000000000Load average : 1.69 0.56 0.20
eth0 : 192.168.5.156/24, fe80::200:64ff:fe9c:a2f0/64
Nerves CLI help: https://hexdocs.pm/nerves/using-the-cli.html
Toolshed imported. Run h(Toolshed) for more info.
iex(1)>
まとめ
config/target.exs
に user_passwords
を設定すると、ユーザ名/パスワードでSSHログインできるようになりました。
注意事項
設定にあたっての注意事項は以下になります。
- 認証の順序は
authorized_keys
→user_password
となり、SSH鍵認証が優先される - SSHのデフォルトユーザは一番はじめに記載されたユーザ
- パスワードが平文で保存される
明日は @torifukukaiou さんの「Third-party JS packages on Phoenix 1.6 (2021/12/12)」です。