やりたいこと
- Raspberry Pi の OS をインストール
- セキュリティ強化
- SSHやVNCで接続できるようにする
1. Raspberry Pi OS インストール
https://www.raspberrypi.com/software/ より Download for Windows をクリックして,ダウンロード.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-956x1024.png?resize=956%2C1024&ssl=1)
ダウンロードが完了したら,ファイルを実行する.
OS選択ボタンを押して,RaspberryPi OS(32-bit) を選択
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-1.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-2.png?ssl=1)
次にストレージ選択ボタンを押して,インストールするSDカードを選択する
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-3.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-4.png?ssl=1)
最後に,WRITEボタンを押してイメージの書き込みを開始する.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-5.png?ssl=1)
本当にSDカードに書き込んでよいのか聞かれるので, Yes.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-6.png?ssl=1)
ラズベリーパイが焼けるまで待ちます.
書き込むマシンの性能にもよりますが,おおよそ5分程度かかります.
無事に焼きあがっていれば,下記のようなダイアログが出てるので,
ディスクを取り出します.ディスクを取り出すときは,右下の
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-9.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-8.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-7.png?ssl=1)
焼き上がったSDカードをラズパイに差し込みます.
ラズパイにモニターと電源を接続します.
このとき,電源は,2.5A 以上の出力のものを使うこと,
また忘れやすいのですが,ケーブルも2.5A以上の出力用の
(内部抵抗の低い)ものを使いましょう.
私は,800mA の電源を使っていたため,
Wi-Fi(消費電力多め)を使った瞬間に電源が落ち,
無駄に時間を浪費しました.(原因が分からず悩み時間でorz
起動を確認したら,Next を押します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-44-1024x576.png?resize=1024%2C576&ssl=1)
ロケーションの設定です.時刻や言語の設定になります.
私はUSキーボードしか使わないので,
“Use US Keyboard” にもチェックをいれました.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-39.png?ssl=1)
デフォルトで作成されるユーザアカウント名 pi のパスワードを設定します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-40.png?ssl=1)
タスクバーの位置について聞かれますが,無視します.Nextで.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-48.png?ssl=1)
WiFiの設定です.繋げたいSSIDを選択し,パスワードを入力します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-41.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-49.png?ssl=1)
ネットに繋がったら,ソフトウェアアップデートをするので,Nextを押します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-42.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-45.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-46.png?ssl=1)
最後に再起動します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-47.png?ssl=1)
2. セキュリティ強化
- pi ユーザの削除 : デフォルトのアカウントのままだと,パスワードクラックを受けやすくなります
- オートログインの無効化
- root のパスワードを設定しておく
の3点を行います.
pi ユーザの削除
pi をただ削除するだけだと,ログインできなくなってしまうので,
新規にアカウントを作成します.ここでは mypi を新ユーザとします.
ターミナルを立ち上げます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-50.png?ssl=1)
sudo adduser mypi
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-51.png?ssl=1)
piと同じ権限をmypiに付与するため,まず pi に与えられた権限を確認.
groups pi
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-52-1024x102.png?resize=1024%2C102&ssl=1)
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 (←カンマで区切り,スペースは入れない
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-54-1024x106.png?resize=1024%2C106&ssl=1)
pi ユーザのホームディレクトリの中身を mypi へコピー
sudo cp -r /home/pi/* /home/mypi
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-53-1024x36.png?resize=1024%2C36&ssl=1)
最後に piユーザでログインできないようにします.
pi のアカウント有効期限を過去のものにするコマンドを使います.
sudo usermod –expiredate 1 pi
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-57-1024x43.png?resize=1024%2C43&ssl=1)
再起動して,mypi でログインし直します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-58.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-59-1024x152.png?resize=1024%2C152&ssl=1)
オートログインの無効化
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-55.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-56-1024x433.png?resize=1024%2C433&ssl=1)
root のパスワードの設定
sudo passwd root
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-60-1024x511.png?resize=1024%2C511&ssl=1)
3. SSHやVNCで接続できるようにする
SSHやVNCはネットワークの設定をするため,
PCとラズパイの位置付けで設定内容が変わってしまうのですが,
話をややこしくしないために,まずは同一LAN内にいるとします.
具体的には,下記のような感じです.
PCもラズパイも同じルータからIPアドレスをもらってます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-63.png?ssl=1)
それではVNCの設定から行っていきます.
VNCは,ラズパイのGUI をLAN内から制御できる仕組みです.
リモートデスクトップとも呼ばれます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-61.png?ssl=1)
インターフェース → VNC, SSHの有効化します.
SSH はCUIベースのリモート接続ツールです.
後ほどSSH でも接続できるようにするので,有効化しておきましょう.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-62.png?ssl=1)
デスクトップ右上のVNCサーバのアイコンをクリックして
出てくるIPアドレスをメモしておきます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-64.png?ssl=1)
続いて,PC側に VNC クライアントをインストールします.
https://www.realvnc.com/en/connect/download/viewer/
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-65.png?ssl=1)
ダウンロードが完了したら,アプリを立ち上げ,
「New Connection」を選択します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-66.png?resize=390%2C451&ssl=1)
先ほど,メモしたIPアドレスを入力します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-68.png?ssl=1)
ダブルクリックで起動します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-67.png?ssl=1)
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-69.png?ssl=1)
ディスプレイをつながなくても,VNCだけで運用できるように,
あらかじめ画面の設定をしておきます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-71.png?ssl=1)
PC側のモニタの解像度に合わせて,Headless Resolution の値を変更します.
設定変更後,再起動を促されるので,再起動します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-70.png?ssl=1)
※注:上記画像では1280×720 になってますが,実際は1920×1080にしました.
再起動すると,画面がおかしなことになっていることが確認できます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-72-1024x601.png?resize=1024%2C601&ssl=1)
ターミナルを開き,sudo vi /boot/config.txt で設定ファイルを編集します.
17, 18行目の先頭の# を外して,以下のように書き換えます.
framebuffer_width=1920
framebuffer_height=1080
また,62 行目をコメントアウトしておきます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-73.png?ssl=1)
この部分,ネットには,同設定ファイルの 62行目の末尾に
「,nocomposite」を追記するやり方もありますが,
それだと,HDMI接続の場合にディスプレイに映らなくなります.
万が一,VNCが繋がらなくなった場合,
ディスプレイを繋いでのレスキューができないということです.
なので,繰り返しになりますが,62行目はコメントアウトで対応しましょう.
なお,最悪,VNC/HDMI 共に繋がらなくなったら,
microSDをラズパイから抜き,PCに入れて,SDカードドライブから
config.txt をメモ帳などで修正し,再度ラズパイに入れれば,
HDMI接続できるようになります.
上記の設定ファイルの書き換えが終わったら,再起動します.
以上でVNCの設定は終わりです.
次にSSH の設定です.
SSHの接続のやり方には主に2つあり,
- パスワード認証:id, pass を入力して一致したら認証する
- 公開鍵認証:クライアント側で,錠前(公開鍵)と鍵(秘密鍵)を用意しておき,あらかじめ錠前をサーバーに渡しておき,その錠前に鍵を使って認証する
デフォルトは,パスワード認証になっているが,セキュリティ的に公開鍵認証に比べて弱いので,公開鍵認証へ変更する.
まずデフォルト状態のパスワード認証で接続できるか,をテストします.
Windows のPowerShell を立ち上げて,ssh mypi@192.168.1.3 と入力.
初回だけ「今までに繋げたとこじゃないけど本当に繋げますか?」と聞かれるので,yes.
パスワードを入力するとログインできることを確認.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-75-1024x335.png?resize=1024%2C335&ssl=1)
exit でログアウトする.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-74.png?ssl=1)
.ssh フォルダが自動生成され,その中に入っているid_rsa が秘密鍵,
id_rsa.pub が公開鍵,です.
ためしにデフォルト状態で生成した鍵の素性は以下の通り3072bit になってます.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-77.png?resize=620%2C31&ssl=1)
出来上がった公開鍵(id_rsa.pub)をRaspberryPi へ送ります.
まず,SSHでRaspberryPi に入り,送り先のフォルダ .ssh をホームディレクトリに作ります.
Linuxは外部から公開鍵を使ったSSH接続を試みられた場合,
このフォルダ内にある公開鍵を使います.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-78.png?ssl=1)
終わったら, SCPで公開鍵を送ります.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-80.png?ssl=1)
その後,autorized_keys に追記(初めての場合は自動で新規作成されるし,公開鍵(id_rsa.pub)は削除します.
フォルダとファイルのアクセス権限を変更します(chmod).
- authorized_keys ファイルを管理者のみ読み書きできるよう 600 に
- .ssh フォルダは管理者のみが実行と読み書きができるよう700に
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-81.png?ssl=1)
最後に,sudo vi /etc/ssh/sshd_config で,
・rootユーザでのログインの禁止
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-82.png?ssl=1)
・パスワード認証ssh を無効化して,公開鍵認証sshのみ許可
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-83.png?ssl=1)
を行い,SSHサービスを再起動し,
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-84-1024x54.png?resize=1024%2C54&ssl=1)
ログアウトします.
最後に,クライアント側からSSH接続できるか確認します.
![](https://i0.wp.com/loochs.org/wp-content/uploads/2021/12/image-85.png?ssl=1)
明示的に 秘密鍵を指定する場合は,
ssh -i id_rsa mypi@192.168.1.3 のようにします.
以上で,Raspi にHeadless(モニターやキーボード類を準備しなくてよい)環境を構築できました.