MacからRaspberryPiへSSH接続とVNC接続を行うための備忘録

(2023年8月5日追加情報)
コメントで情報提供いただきましたので、以下の方法でうまくいかない方はこちらも試してみてください。@ongulpenguin(Penguin Ongul)さんありがとうございました。
https://qiita.com/kosukein38/items/e16d83f0d9beb31b2567#comment-7b40482f40bb96e8a0f3

# はじめに
久しぶりの投稿です。

MacからRaspberryPiへSSH接続やVNC接続ができると、ラズパイ専用のキーボード、ディスプレイ、マウスがいらなくなり、開発がスムーズになるかと思います。

MacからRaspberryPiへSSH接続→VNC接続を行うのに、結構手間取ったので、備忘録的にメモを残しておきます。間違いがありましたら、ご指摘お願いいたします🙏

本来であれば`RealVNC` の VNC クライアントを利用する方がセキュリティ上、望ましいようですが、どうも執筆時点(2022年10月16日時点)でうまくRealVNC Viewerのアプリケーションがうまく起動せず、、、
家のローカルLAN内だけの操作になるので**FinderからVNC接続**を試みることにしました。
(参考)https://daeudaeu.com/raspberry-pi-vnc-err/#ssh

また、こちらも参考にさせていただきました🙇‍♂️
(参考)https://qiita.com/n0bisuke/items/0ccec7f9ce71ef54ddcc




# 要約
- MacからRaspberryPiにSSH接続を行う方法
- SSH接続からMacのFinderを使ったVNC接続を行う方法

# （はじめに）ラズパイとMacの情報

デバイスは**Raspberry Pi 3 Model B**
```
pi@raspberrypi:~ $ lsb_release -a
No LSB modules are available.
Distributor ID:	Raspbian
Description:	Raspbian GNU/Linux 11 (bullseye)
Release:	11
Codename:	bullseye
```
```
$ sw_vers
ProductName:	macOS
ProductVersion:	12.6
BuildVersion:	21G115
```


# MacからRaspberryPiにSSH接続を行う方法

### RaspberryPi ImagerによるRaspberry PI OSの書き込み

RaspberryPi Imagerを使ってOSを書き込みをする際に、歯車のマークから以下の設定を行う。
![1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/dd2d84ca-2207-a644-81de-81d1906553b6.jpeg)

WiFi設定をしておくことで、すぐにSSH接続できる。
![2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/81832b1f-d5de-83a9-ce35-cc4d194107b4.jpeg)

ついでに、ロケールも設定しておく。
![3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/4c6d6e88-2da1-9f93-8cb2-87a0b4624a83.jpeg)

OSをSDカードに書き込んで、ラズパイにセットしたら電源を入れます。

### SSHでRaspberrypiへ入る

以前にRaspberryPiへSSH接続したことある方はおそらく、このまま接続しようとしても、以下のように、ホスト鍵が一致しないため、ホスト認証が失敗し、拒否されるため、以下の`raspberrypi.local`から始まる行を全て削除することにより、古いホスト鍵をknown_hostsから削除して、新しい鍵を登録する必要がある。


```
$ cat /Users/xxxxxxxxx（ユーザー名）/.ssh/known_hosts
#=>
（他のホスト鍵情報）**********
raspberrypi.local ssh-ed25519 xxxxxxxx
raspberrypi.local ssh-rsa xxxxxxxxxx
raspberrypi.local ecdsa-sha2-nistp256 xxxxxxxx
```

```
$ vi /Users/xxxxxxxxx（ユーザー名）/.ssh/known_hosts
#=>viエディタ操作で、上のraspberrypi.local~~から始まる行を全て削除
```

```
$ ssh pi@raspberrypi.local                  
The authenticity of host 'raspberrypi.local (2400:4052:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx)' can't be established.
ED***** key fingerprint is SHA***:xxxxxxxxxxxxxxxxxxx.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? **yes**
Warning: Permanently added 'raspberrypi.local' (ED*****) to the list of known hosts.
**pi@raspberrypi.local's password:** 
Linux raspberrypi 5.15.61-v7+ #1579 SMP Fri Aug 26 11:10:59 BST 2022 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Sep 22 09:35:08 2022

**pi@raspberrypi:~ $**
```

これでSSH接続は完了！


# SSH接続からMacのFinderを使ったVNC接続を行う方法
（慣れている方はSSH接続で全て解決かもしれません笑）

VNCの設定を確認します

```
pi@raspberrypi:~ $ sudo raspi-config nonint get_vnc
1
#=>1は無効、0は有効
```
VNC設定が無効なので、`raspi-config`から有効にします。
```
$ sudo raspi-config
```
インターフェイスオプション
![4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/f95ab6eb-20e9-3f7d-8da8-4f7f4ed024e7.jpeg)
VNC選択
![5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/138391f7-e926-e034-3b22-222fb9fe8506.jpeg)
Yesを選択
![6.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/619379ec-1610-ba94-5568-d343f8d851ef.jpeg)
Finishを選択
![7.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/19419273-3074-e41c-ca4a-f7b2277059eb.jpeg)
これでラズパイのVNC接続が有効化された。

```
pi@raspberrypi:~ $ sudo raspi-config nonint get_vnc
0
#=>1は無効、0は有効
```
念のため、`sudo reboot`で再起動。


ラズパイのIPアドレスを確認します。(以下の`***.***.**.**`部分)
```
pi@raspberrypi:~ $ hostname -I
***.***.**.** XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX
```
しかし、Macから「Finder>移動>サーバーへ接続」を行って、
`vnc://(IPアドレス):5900`にアクセスしても
拒否される。

![10.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/2588b58c-2e07-d351-4b2d-d6d29b206b1d.jpeg)

![8.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/e9079b25-c8f4-7ae1-b6aa-dbd69ff228af.jpeg)
![9.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/1fe60bee-3309-8978-865f-96f275673f86.jpeg)

### RealVNCServerの設定

以下のようにRealVNCサーバーの設定が必要
```
pi@raspberrypi:~ $ sudo touch /etc/vnc/config.d/common.custom
#=>common.customにRealVNCServerの設定を記述する
```
```
pi@raspberrypi:~ $ sudo vi /etc/vnc/config.d/common.custom
#=>viエディタで以下のを記述する
```

```
Authentication=VncAuth
Encryption=PreferOff
```
(参考)
https://help.realvnc.com/hc/en-us/articles/360002251297-VNC-Server-Parameter-Reference-


さらに、VNCのパスワードを設定する
```
pi@raspberrypi:~ $ sudo vncpasswd -service
Setting "Password" VNC parameter for Service Mode server
Password:（任意のものを設定）
Verify:（もう一度入力）
Successfully set "Password" VNC parameter in /root/.vnc/config.d/vncserver-x11
```
RealVNCServerをrestartし、設定を有効化する。
```
pi@raspberrypi:~ $ sudo systemctl restart vncserver-x11-serviced.service
```
これでFinderから無事にVNC接続ができるように！

先ほどの手順後、パスワードを入力。

![11.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/81e830e6-39fa-a60a-1548-3ff57360ab07.jpeg)

成功！
![12jpg.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1697316/52de7102-ee9a-55bf-99c5-e844444191e8.jpeg)

# 最後に
何かのお役に立てれば幸いです。
間違いはコメントで指摘いただければと思います。
最後まで読んでいただきありがとうございました！！