そこで本稿では、初期状態のArmadillo IoT G3L(以下、G3L)にSSHサーバを手動でセットアップし、SSH接続を通して開発を始める方法について紹介します。
はじめに
G3Lには最新のOSイメージがインストールされているものとします (執筆時点のバージョンはv20190130
)。イメージはこちらからダウンロードしてください。
また、USBシリアル変換アダプタを使ってG3Lのroot
ユーザへのログインをあらかじめ行ってください (デフォルトパスワードはroot
)。
SSHサーバのインストール
さっそくセットアップを行なっていきます。パッケージマネージャを更新し、SSHサーバをインストールしましょう。
# apt update && apt upgrade
# apt install openssh-server
コマンドの実行が終了すると、自動的にSSHサーバが起動します。サービスとして登録されているため、systemctl
コマンドを使って実行状態の確認ができます。
# systemctl status ssh
Linuxユーザの作成
SSHログインするユーザを作成します。
# useradd -m isaax
# passwd isaax
sudo apt install
などのコマンドを使うため、sudoersに作成したユーザを追加します。
# visudo
/etc/sudoers
ファイルが開かれるので、下記の行を追加して保存します。
isaax ALL=(ALL:ALL) ALL
デフォルトではターミナルのタブ補完などが効かないので、ログインシェルをBashに変更しておきます。
# chsh -s /bin/bash isaax
キーペアの作成・登録
ここで一度自分のPC上での作業に移ります。公開鍵認証を使用するために、まだ作成していない場合はキーペアを作成しましょう。下記はMacおよびLinuxでのコマンドです。Windowsを使っている場合は置き換えてお読みください。コマンド実行後いくつか対話形式での設定がありますが、本稿では割愛します。キーペアの作り方の詳細は、GitHubのマニュアルページなどが参考になります。
$ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
先ほどOpenSSHサーバをインストールした時点で、作成したユーザーにパスワードログインすることができます。Armadillo用のOSイメージにはavahi-daemonがデフォルトでインストールされているので、同じローカルネットワークに接続していればホストネームからログインできます。別のターミナルウィンドウを立ち上げてSSHログインしてみましょう。
$ ssh isaax@armadillo.local
それでは、よりセキュアにSSH接続できるように公開鍵認証のセットアップをしていきましょう。Armadilloにログインした時点で、そのユーザーのホームディレクトリにいるはずです。ユーザー名がisaax
なら/home/isaax/
。ホームディレクトリ配下に.ssh
ディレクトリを作成します。
$ mkdir ~/.ssh
.ssh
ディレクトリにauthorized_keys
ファイルを作成して自分のPC上で作成した公開鍵の内容をコピー&ペーストし、保存します。公開鍵は、特に設定を変更せずに作成した場合はid_rsa.pub
の名前で作成されます。
$ vi ~/.ssh/authorized_keys
# ファイル権限を変更
$ chmod 600 authorized_keys
SSHサーバの設定
ここまでできたら、sshd_config
の内容を変更し、公開鍵のみでの接続を受け付けるなどいくつかの基本的な設定を行います。
$ sudo vi /etc/ssh/sshd_config
viを使っている場合は/
コマンドなどで該当するパラメータを検索しつつ編集してください。コメントアウトされている場合はコメントを外します。
最初に行なったパスワードログインを無効化します。これで、鍵を登録しているユーザーのみがログインできるようになります。
PasswordAuthentication no
空のパスワードを禁止します。
PermitEmptyPasswords no
rootユーザーでのログインを禁止します。
PermitRootLogin no
接続できるユーザーを明示的に指定します。
AllowUsers isaax
sshd_config
には、他にも様々な設定があるので調べてみてください。
テストログイン
設定が完了したら、SSHサーバを再起動しましょう。
$ sudo systemctl restart ssh
一度ログアウトするか、新しいターミナルを開いてSSHログインを試してみます。パスワードログインが無効化され、登録したキーペアでのみログインできるようになっているはずです。キーペアの名前を変更している場合は、-i
オプションに続けて秘密鍵へのパスを指定します。
$ ssh isaax@armadillo.local
ログインできたでしょうか?これでSSHログインをして開発を行う準備ができました。よいArmadillo IoT開発ライフを!
おわりに
GWから得たセンサーデータの取扱や接続に、困っている場合はぜひIoTエンジニア養成キットで学習してください。
]]>