やりたいこと
- Raspberry Pi の OS をインストール
- セキュリティ強化
- SSHやVNCで接続できるようにする
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. セキュリティ強化
- pi ユーザの削除 : デフォルトのアカウントのままだと,パスワードクラックを受けやすくなります
- オートログインの無効化
- root のパスワードを設定しておく
の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 の値を変更します.
設定変更後,再起動を促されるので,再起動します.
※注:上記画像では1280×720 になってますが,実際は1920×1080にしました.
再起動すると,画面がおかしなことになっていることが確認できます.
ターミナルを開き,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つあり,
- パスワード認証:id, pass を入力して一致したら認証する
- 公開鍵認証:クライアント側で,錠前(公開鍵)と鍵(秘密鍵)を用意しておき,あらかじめ錠前をサーバーに渡しておき,その錠前に鍵を使って認証する
デフォルトは,パスワード認証になっているが,セキュリティ的に公開鍵認証に比べて弱いので,公開鍵認証へ変更する.
まずデフォルト状態のパスワード認証で接続できるか,をテストします.
Windows のPowerShell を立ち上げて,ssh mypi@192.168.1.3 と入力.
初回だけ「今までに繋げたとこじゃないけど本当に繋げますか?」と聞かれるので,yes.
パスワードを入力するとログインできることを確認.
exit でログアウトする.
まず,SSHでRaspberryPi に入り,送り先のフォルダ .ssh をホームディレクトリに作ります.
Linuxは外部から公開鍵を使ったSSH接続を試みられた場合,
このフォルダ内にある公開鍵を使います.
終わったら, SCPで公開鍵を送ります.
その後,autorized_keys に追記(初めての場合は自動で新規作成されるし,公開鍵(id_rsa.pub)は削除します.
フォルダとファイルのアクセス権限を変更します(chmod).
- authorized_keys ファイルを管理者のみ読み書きできるよう 600 に
- .ssh フォルダは管理者のみが実行と読み書きができるよう700に
最後に,sudo vi /etc/ssh/sshd_config で,
・rootユーザでのログインの禁止
・パスワード認証ssh を無効化して,公開鍵認証sshのみ許可
を行い,SSHサービスを再起動し,
ログアウトします.
最後に,クライアント側からSSH接続できるか確認します.
明示的に 秘密鍵を指定する場合は,
ssh -i id_rsa mypi@192.168.1.3 のようにします.
以上で,Raspi にHeadless(モニターやキーボード類を準備しなくてよい)環境を構築できました.