Raspberry Pi OSの導入から公開鍵認証でSSH接続するまで
はじめに
ラズパイを購入した人が最初に躓きやすいポイントとして、キーボードやディスプレイとの接続が挙げられる。 モデルによっては、OTGケーブルやHDMI変換アダプタが必要になる場合もあり、準備に手間がかかってしまう。 そこで本記事では、ラズパイをキーボードにもディスプレイにも接続せずに、自分のPCから直接操作する方法を解説する。 公開鍵認証を使った SSH 接続を設定すれば、周辺機器なしで安全かつ快適にラズパイを利用できるようになる。
ラズパイにSSH接続をするにあたって、主な方法は2通りある。1つがパスワード認証、もう1つが本記事で取り扱う公開鍵認証だ。このうちパスワード認証は、初期設定に限っては楽だが、毎回パスワードを入力する手間がかかる。そのうえ、総当たり攻撃や漏洩のリスクがある。対して本記事で取り扱う公開鍵認証では、初期設定の手間こそかかる。ただ、その後のパスワード入力が必要ないため、手間が減り、セキュリティも強固になる。パスワード認証を行いたい方は、調べてみると記事がたくさん出てくるので、そちらを参照されたい。
※ 本記事では、ラズパイは CUI(コマンドライン)での操作を前提としている。GUI環境(マウスでの操作)は扱わず、最小限の構成で効率的にセットアップする流れを紹介する。
公開鍵の作成
まず、PowerShellを管理者権限で開く。画面下部の検索窓に「PowerShell」と入力し、管理者として実行を押す。はい又はいいえを選ぶ画面となったら、はいを押す。黒いウィンドウが出てきたら、成功だ。 次に、下記のコマンドを入力する。現状最もセキュリティが高い「ed25519」という暗号を用いて、公開鍵と秘密鍵を作成する。
ssh-keygen -t ed25519
途中でパスワードは何にする? などと聞かれるため、何も入力せずに「Enter」を押し続けてほしい。図が表示されたら成功だ。
その後に、エクスプローラー(ファイルマネージャー)で、「C:\ユーザー(自身のユーザー名).ssh」を開く。
id-ed25519と、id-ed25519.pubという、2つのファイルがあるはずだ。無い場合には、鍵の作成が正しく行えていない。
上書きを防ぐために、ファイル名を「id-ed25519-pizero1」と、「id-ed25519-pizero1.pub」へと変更した。各自お好みの名前に変更してほしい。
これにて、公開鍵の作成は完了だ。
SSH config の作成
今のところ、公開鍵を作成しただけで、接続先(ラズパイ)の情報をPCに登録していない。本章では、configファイルを作成し、接続先情報の記述を行う。
.sshのフォルダ内に、「config」という名前のファイルを作成する。「.txt」や、「.png」などの拡張子は付けないこと。
configファイルを、メモ帳や好みのテキストエディタで開く。
下記のような形式で記述する。
Userは、基本的にはメディアを作成するPCのユーザ名で良いのだが、「5. メディアの作成」にて解説する。
Host (好きな名前[半角英数字])
HostName (好きな名前[半角英数字]).local
User (5. メディアの作成 で解説)
IdentityFile ~/.ssh/(.pubが無い方の鍵の名前)
筆者の場合は下記の様に記述した。
これにて、SSH configの作成は完了だ。
Raspberry Pi Imager のダウンロード
ラズパイOSをSDカードに書き込むためのソフトウェアをダウンロードする。
下記リンクからダウンロードできる。
https://www.raspberrypi.com/software/
「Download for windows」を押して、インストーラーをダウンロードする。
Raspberry Pi Imager のインストール
ダウンロードした「.exe」ファイルを実行する。
インストール時に使用する言語を選択する画面になるが、日本語が無いため、英語を選択する。
「Next」を押す。
規約を読み、同意できる場合には「accept」にチェックを入れ、「Next」を押す。
「Next」を押す。
デスクトップにアイコンが必要な場合のみ、チェックを入れる。「Next」を押す。
チェックを入れて、「Finish」を押す。
これにて、Raspberry Pi Imagerのインストールが完了だ。
メディアの作成
ラズパイに使用するmicroSDカードを、使用中のPCに挿す。差込口がない場合には、別途100円ショップ等でアダプタを購入されたい。
Raspberry Pi Imagerを起動する。直前にインストールを行った場合は、すでに起動しているはずだ。
左側の「デバイスを選択」を押す。その後、使用するラズパイのモデルを選択する。今回筆者は、「Raspberry Pi Zero」を選択した。
中央の「OSを選択」を押す。その後、使用したいOSを選択する。32bitと64bitの両方がある場合には、基本的に64bitの選択を推奨する。筆者のラズパイzeroは、64bitに対応していなかったため、32bitのLite版を選択した。
最後に、右側の「ストレージを選択」を押す。その後に、OSをインストールするメディアを選択する。データはすべて削除されるため、容量をよく確認し、間違えないようにされたい。
すべて選択完了後、「次へ」を押す。
左側の、「設定を選択する」を押す。
まずは、一般タブを埋めていく。ホスト名にチェックを入れて、configファイル作成時に決めたホスト名を、.localの手前まで入れる。
次に、「Wi-Fiを設定する」にチェックを入れて、SSIDとパスワードを入力する。PCにWi-Fiを接続している場合には、自動的に入力されていることもある。
その後に、ロケールを設定する。同じくチェックを入れて、タイムゾーンを「Asia/Tokyo」、キーボードレイアウトを「jp」に設定する。
その次に、サービスタブを埋めていく。「SSHを有効にする」にチェックを入れて、「公開鍵認証のみを許可する」にチェックを入れる。
ユーザー○○のためのauth...と表示されるので、○○の部分をconfigファイルの「User」の後に入力する。
作成した公開鍵の、.pubファイルをメモ帳やテキストエディタで開き、全文をコピーする。メモ帳やテキストエディタは閉じてしまって構わない。
サービスタブのテキストボックスに、そのまま貼り付けする。テキストボックスが存在しない場合には、「ADD SSH KEY」を押す。
「保存」を押し、「はい」を押す。
警告を受けるので、よく確認して「はい」を押す。※指定したドライブのデータは"すべて"削除される。
ダウンロードと書き込みが開始されるので、10分ほど待機する。
完了したら、「続ける」を押し、microSDカードをPCから取り外す。
以上でOSのSDカードへの書き込みは完了だ。
電源投入
microSDカードをラズパイに差し込んだ後に、電源ケーブルをラズパイに差し込む。モデルによって、USB-TypeB-micro, DCジャック, USB-TypeCだったりとまちまちなので、各自のモデルに合ったケーブルを差し込んでほしい。正しく差し込めると、基板上のLEDランプが点滅する。
公開鍵認証によるSSH接続
電源の初回投入後、10分ほど待機してから、PowerShellで下記コマンドを実行する。PowerShellに管理者権限を与える必要はない。
ssh (hostの名前)
「yes/no」などと聞かれるので、「Yes」を入力してEnterを押す。
黄緑色の文字が出たら、接続完了だ。
接続を切る際には、exitと入力する。
exit
ラズパイをシャットダウンする際には、下記のコマンドを入力する。
sudo shutdown -h now