Raspberry Pi インストールからHeadless環境構築まで

公開: 2021-12-30 / 更新: 2025-07-16

やりたいこと

1. Raspberry Pi OS インストール

https://www.raspberrypi.com/software/ より Download for Windows をクリックして,ダウンロード.

ダウンロードが完了したら,ファイルを実行する.

OS選択ボタンを押して,RaspberryPi OS(32-bit) を選択

次にストレージ選択ボタンを押して,インストールするSDカードを選択する

最後に,WRITEボタンを押してイメージの書き込みを開始する.

本当にSDカードに書き込んでよいのか聞かれるので, Yes.

ラズベリーパイが焼けるまで待ちます.

書き込むマシンの性能にもよりますが,おおよそ5分程度かかります.

無事に焼きあがっていれば,下記のようなダイアログが出てるので,

ディスクを取り出します.ディスクを取り出すときは,右下の

焼き上がったSDカードをラズパイに差し込みます.

ラズパイにモニターと電源を接続します.

このとき,電源は,2.5A 以上の出力のものを使うこと,

また忘れやすいのですが,ケーブルも2.5A以上の出力用の
(内部抵抗の低い)ものを使いましょう.

私は,800mA の電源を使っていたため,
Wi-Fi(消費電力多め)を使った瞬間に電源が落ち,
無駄に時間を浪費しました.(原因が分からず悩み時間でorz

起動を確認したら,Next を押します.

ロケーションの設定です.時刻や言語の設定になります.

私はUSキーボードしか使わないので,
"Use US Keyboard" にもチェックをいれました.

デフォルトで作成されるユーザアカウント名 pi のパスワードを設定します.

タスクバーの位置について聞かれますが,無視します.Nextで.

WiFiの設定です.繋げたいSSIDを選択し,パスワードを入力します.

ネットに繋がったら,ソフトウェアアップデートをするので,Nextを押します.

最後に再起動します.

2. セキュリティ強化

の3点を行います.

pi ユーザの削除

pi をただ削除するだけだと,ログインできなくなってしまうので,
新規にアカウントを作成します.ここでは mypi を新ユーザとします.

ターミナルを立ち上げます.

sudo adduser mypi

piと同じ権限をmypiに付与するため,まず pi に与えられた権限を確認.

groups pi

pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio,lpadmin の権限があることが確認できたので,mypiに付与します.

sudo usermod -G pi,adm,dialout,cdrom,sudo,audio,video,plugdev,games,users,input,netdev,spi,i2c,gpio,lpadmin mypi (←カンマで区切り,スペースは入れない

pi ユーザのホームディレクトリの中身を mypi へコピー

sudo cp -r /home/pi/* /home/mypi

最後に piユーザでログインできないようにします.
pi のアカウント有効期限を過去のものにするコマンドを使います.

sudo usermod --expiredate 1 pi

再起動して,mypi でログインし直します.

オートログインの無効化

root のパスワードの設定

sudo passwd root

3. SSHやVNCで接続できるようにする

SSHやVNCはネットワークの設定をするため,
PCとラズパイの位置付けで設定内容が変わってしまうのですが,
話をややこしくしないために,まずは同一LAN内にいるとします.

具体的には,下記のような感じです.
PCもラズパイも同じルータからIPアドレスをもらってます.

それではVNCの設定から行っていきます.
VNCは,ラズパイのGUI をLAN内から制御できる仕組みです.
リモートデスクトップとも呼ばれます.

インターフェース → VNC, SSHの有効化します.
SSH はCUIベースのリモート接続ツールです.
後ほどSSH でも接続できるようにするので,有効化しておきましょう.

デスクトップ右上のVNCサーバのアイコンをクリックして
出てくるIPアドレスをメモしておきます.

続いて,PC側に VNC クライアントをインストールします.

https://www.realvnc.com/en/connect/download/viewer/

ダウンロードが完了したら,アプリを立ち上げ,
「New Connection」を選択します.

先ほど,メモしたIPアドレスを入力します.

ダブルクリックで起動します.

ディスプレイをつながなくても,VNCだけで運用できるように,
あらかじめ画面の設定をしておきます.

PC側のモニタの解像度に合わせて,Headless Resolution の値を変更します.
設定変更後,再起動を促されるので,再起動します.

※注:上記画像では1280x720 になってますが,実際は1920x1080にしました.

再起動すると,画面がおかしなことになっていることが確認できます.

ターミナルを開き,sudo vi /boot/config.txt で設定ファイルを編集します.
17, 18行目の先頭の# を外して,以下のように書き換えます.

framebuffer_width=1920
framebuffer_height=1080

また,62 行目をコメントアウトしておきます.

この部分,ネットには,同設定ファイルの 62行目の末尾に
「,nocomposite」を追記するやり方もありますが,
それだと,HDMI接続の場合にディスプレイに映らなくなります.

万が一,VNCが繋がらなくなった場合,
ディスプレイを繋いでのレスキューができないということです.

なので,繰り返しになりますが,62行目はコメントアウトで対応しましょう.

なお,最悪,VNC/HDMI 共に繋がらなくなったら,
microSDをラズパイから抜き,PCに入れて,SDカードドライブから
config.txt をメモ帳などで修正し,再度ラズパイに入れれば,
HDMI接続できるようになります.

上記の設定ファイルの書き換えが終わったら,再起動します.
以上でVNCの設定は終わりです.

次にSSH の設定です.

SSHの接続のやり方には主に2つあり,

デフォルトは,パスワード認証になっているが,セキュリティ的に公開鍵認証に比べて弱いので,公開鍵認証へ変更する.

まずデフォルト状態のパスワード認証で接続できるか,をテストします.

Windows のPowerShell を立ち上げて,ssh mypi@192.168.1.3 と入力.

初回だけ「今までに繋げたとこじゃないけど本当に繋げますか?」と聞かれるので,yes.

パスワードを入力するとログインできることを確認.

exit でログアウトする.

続いてPowerShell内 で公開鍵・秘密鍵を生成します.
.ssh フォルダが自動生成され,その中に入っているid_rsa が秘密鍵,
id_rsa.pub が公開鍵,です.
PS C : users > ssh-keygen 
-t 
rsa 
eneratina vate rsa kev Dai r 
096 
'Enter file in which to save the kev (c: users . ss rsa . 
Enter passphrase (empty tor no passphrase) : 
Enter. same oassohrase aaain• 
our Identifi cation has been save nn c: .ssh/id_rsa. 
our public key has been saved in c: 
he key fingerprint is: 
SHA256:- 
he key's ranQ)tnart image is: 
[RSA 4096]----+ 
ps C. 
rsy9LAPTOP-FZE+F4F.;
 
ssh-keygen コマンドで RSA暗号(公開鍵と秘密鍵の生成ロジック)を指定すると,デフォルトで3072bit の暗号強度となります.
-b 4096 と指定することで,4096bit へ変更できます.

ssh-keygen -lf id_rsa で出来あがった鍵の素性を確認できます.



ためしにデフォルト状態で生成した鍵の素性は以下の通り3072bit になってます.




出来上がった公開鍵(id_rsa.pub)をRaspberryPi へ送ります.

まず,SSHでRaspberryPi に入り,送り先のフォルダ .ssh をホームディレクトリに作ります.
Linuxは外部から公開鍵を使ったSSH接続を試みられた場合,
このフォルダ内にある公開鍵を使います.

終わったら, SCPで公開鍵を送ります.

その後,autorized_keys に追記(初めての場合は自動で新規作成されるし,公開鍵(id_rsa.pub)は削除します.

フォルダとファイルのアクセス権限を変更します(chmod).

最後に,sudo vi /etc/ssh/sshd_config で,

・rootユーザでのログインの禁止

・パスワード認証ssh を無効化して,公開鍵認証sshのみ許可

を行い,SSHサービスを再起動し,

ログアウトします.

最後に,クライアント側からSSH接続できるか確認します.

明示的に 秘密鍵を指定する場合は,
ssh -i id_rsa mypi@192.168.1.3 のようにします.

以上で,Raspi にHeadless(モニターやキーボード類を準備しなくてよい)環境を構築できました.