Armadillo IoT G3LにSSHサーバを構築しよう

Armadillo IoT G3Lでは、USBシリアル変換アダプタを使ってターミナル操作をすることが可能です。ただし、公式のOSイメージでSSHログインを行いたい場合は別途インストールする必要があります。

そこで本稿では、初期状態の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エンジニア養成キットで学習してください。

]]>

上部へスクロール