Macでやるラズパイセットアップ(リモートデスクトップ/VScodeのSSH接続辺りまで)

沢山センサー用意しなきゃならないのでメモがわりに

# 項目
1. 必要なもの
2. MacとSSH接続
3. リモートデスクトップ
4. VScodeのSSH接続
5. ホスト名を変更(複数管理したい時にSSH周りで便利)
6. IP固定etcは今後書くはず

# 1.必要なもの
- OS入れたばかりのSDカード
- ラズパイ
- モニター(あった方が楽)
- キーボード(〃)
- マウス(〃)
- XQuartz(https://www.xquartz.org/)

# 2.MacとSSH接続
## 下準備
```bash:
$ touch /Volumes/boot/ssh
```

boot下に`wpa_supplicant.conf`というファイルを作成、中身は

```bash:wpa_supplicant.conf
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSID"
    psk="wifiパスワード"
}
```
SDカードをラズパイに接続し、下記でSSH接続

```bash:
$ ssh pi@raspberrypi.local
#要求されるパスワードはraspberry
```
接続後、`/etc/hostname`、`/etc/hosts`内にある`raspberrypi`を好きなホスト名に変更
それによって`ssh pi@ホスト名`で接続できる様になる

### エラーが出る場合
```bash:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
```
3項目下辺りに対処法有り


## raspberry piサイド
- とりあえずSD刺してモニターその他諸々接続したラズパイを起動
- 基本同じ無線に接続した方が楽
- `raspberrypiの設定`から解像度を適当に弄って見やすくしておく(大きめが良い)
- ラズパイのターミナルを開いて...

```bash:ラズパイターミナル
$sudo raspi-config
#これでセットアップインターフェースが出る

#`Interfacing Options`を選択し、SSH云々書いて有るところをEnter
#enableするか聞いてくるのでyes
#`Finish`で終了
```
-　ここですかさずラズパイのIPを確認
-　恐らくWi-Fiのマークにカーソルを合わせればIPが表示される
-　されない場合はラズパイで`ip a`かMacで`arp -a`をしてそれっぽいのを探す

## Macサイド
- ターミナルを開き...

```bash:ターミナル
$ssh pi@IPアドレス
#パスワードはraspberryがデフォルト

pi@raspberrypi:~ $
#これが表示されればSSH接続完了

#シャットダウンせず接続を切るには
pi@raspberrypi:~ $exit

#シャットダウンしちゃうには
pi@raspberrypi:~ $sudo shutdown -h now
```

## エラーが出た場合
- これが出た場合

```bash:ターミナル
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
```
- ホストキーが何やらと言っているので修正する
- エラー文の

```bash:
Add correct host key in [/Users/ユーザ名/.ssh/known_hosts] to get rid of this message.
```
`[ ]`で囲んだ部分をコピーし、`vi /Users/ユーザ名/.ssh/known_hosts`する

- このエラー文の下に`/Users/ユーザ名/.ssh/known_hosts:行数`が書いてあるので、そこをコメントアウトし保存終了
- もう一度SSH接続をしてみよう

# 3.リモートデスクトップ
- モニターで表示されていた画面をMac上で表示、操作出来る様にする
- 事前に**XQuartz(https://www.xquartz.org/)**を入れておこう！
- raspberry piを起動
- Macのターミナルを開く

```bash:ターミナル
$ssh -X pi@ラズパイのIPアドレス
#パスワードは前述同様(変えてないなら)

pi@raspberrypi:~ $x-session-manager
```
これでraspberry piのモニターが表示されたら完了
終わらせるときは普通に終了しちゃって良いんじゃないかしら

# 4.VScodeのSSH接続
いちいち`vi`でスクリプト書くのはだるい、Macの`VScode`からリモートでraspberry piに接続出来る！

- raspberry piの電源を付ける
- VScodeの拡張機能から`Remote - SSH(Nightly)`をインストール
- 青い方じゃなくて緑の方を入れる
    - **追記:`Remote - SSH(Nightly)`は削除された様です、現状は`Remote - SSH`(青い方)で出来ます**

拡張機能を入れると左端の項目欄?に
![スクリーンショット 2021-04-19 14.45.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/649647/1da8af96-1d43-87b2-4513-4bb1e7501603.png)
PCっぽいマークが出るので選択。

- `SSH TARGETS`の左横に歯車があるのでクリック
- `\Users\ユーザ名\.ssh\config`があるならそれを選択
- 無いなら`Settings`から↑っぽいのを作ろう
- `config`に書き込めるので...

```
Host 設定してるホスト名(/etc/hostsの中見たらわかると思う)
 HostName raspberry piのIPアドレス(または/etc/hostnameの中身)
 User pi
(もしかしたら↑の括弧内逆かも)
```
これで保存。

- 保存したのちに`SSH TARGETS`に`ホスト名`が出てくるので、その右端にある`Connect to Host in New window`を選択
- ウィンドウが開いて暫く待つとパスワードが要求されるので、今まで通りのを入力
- これで完了！

フォルダーを開くとraspberry pi上のディレクトリから選択できる。<br>ここで保存すると向こうにちゃんと反映してくれる。

## 新しいraspberry piを接続しようとしたら出来なくなった...
`VSCode` → `View` → `Command Palette` → `"remote"と入力` → `Remote-SSH：Kill VS Code Server on Host ~~ を選択` → `該当の設定をkill` → `もう一回接続`

# 5.ホスト名を変更
複数管理する時に、SSHにIP使っていると環境が変わった際に不便。
なのでホスト名で管理する。

二段階の作業が必要
まずはviで`/etc/hosts`を開いて

```:
raspberry
↑
好きなホスト名に変更
```
次に同様viで`/etc/hostname`を開いて

```:
127.0.1.1       raspberry
　　　　　　　　　　　  ↑
　　　　　　　　　前述と同じホスト名に変更
```
これで一度シャットダウンし再起動
暫く待ってホスト名でssh接続出来るか確認する

# 終わりに
取り敢えずここまで！<br>
IP固定云々はまた今度

https://qiita.com/ksh-fthr/items/234fecc4d505cb32212f

# 追記
## ルータの交換等、何かしらで急に`pip/apt/ネット`が動かなくなった時
Wi-Fiには繋がってるしローカルでSSHも出来るけど、外部への接続が出来ない時

```bash:
# 有線で繋いでいる時
$ sudo dhclient eth0
# 無線で繋いでいる時
$ sudo dhclient wlan0
```
IPアドレスを振り直すと直る