raspi-configを使ったCUI(CLI)からのSSHの有効化

[4GPi]:https://mechatrax.com/products/4gpi/
[slee-Pi3]:https://mechatrax.com/products/slee-pi/
[ADPi]:https://mechatrax.com/products/adpi/
[機能拡張モジュール]:https://mechatrax.com/products/
[イプシム]:https://ipsim.net/
[USB-シリアル変換ケーブル]:https://store.mechatrax.com/product.php?id=38
[弊社]:https://mechatrax.com/
[メカトラックス株式会社]:https://mechatrax.com/
[SORACOM]:https://soracom.jp/
[SORACOM Napter]:https://soracom.jp/services/napter/
[Remote.It]:https://ja.remote.it/
[@hayat00]:https://qiita.com/hayat00
[Raspberry Pi Imager]:https://www.raspberrypi.com/software/
[弊社オンラインストア]:https://store.mechatrax.com/
[Tera Term]:https://ja.osdn.net/projects/ttssh2/
[OSイメージ]:https://mechatrax.com/data/4gpi/


# はじめに
　[メカトラックス株式会社]の[@hayat00]です。

　[弊社]では業務用Raspberry Pi周辺機器の開発・製造・販売、および、それら周辺機器を使用したRaspberry Pi組込機器の受託開発・小ロット製造等を行っており、オリジナルのラズパイ向け[機能拡張モジュール]として、[4GPi]、[slee-Pi3]、[ADPi]などを展開しています。

https://mechatrax.com/

　今回は、シリアル通信等でPCからログインしたRaspberry Piを、CUI(CLI)から操作してSSHを有効化する手順をご紹介します。CUIからSSHを有効化/無効化する方法は、
```
$ sudo systemed {enable|disable} ssh
```
のように「systemed」を使うことが一般的かと思いますが、ここでは別の方法として「raspi-config」を使ったSSHの有効化をご紹介します。

　また、[弊社]ではシリアル通信によるRaspberry Piへのログインを推奨しており、下記のブログで紹介しています。

https://qiita.com/hayat00/items/0d586f5500e998ab4d2e

# 使用したRaspberry Pi OSの情報
Raspberry Pi OS Lite
- Release date: February 21st 2023
- System: 32-bit
- Kernel version: 5.15
- Debian version: 11 (bullseye)

# SSHの有効化
　CUIからの操作でraspi-configの設定を変更する方法は、InteractiveモードとNon-Interactiveモードの2種類があります。

## InteractiveモードでSSHを有効化する
　下記のコマンドを実行し、raspi-configの画面を開きます。
```
$ sudo raspi-config
```

「3 Interface Options」にカーソルを移動させ、エンターキーを押します。
![WS000111.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/64a24834-7c05-c7a1-0acd-32ae6b013288.jpeg)

「I2 SSH」にカーソルを移動させ、エンターキーを押します。
![WS000112.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/5b27b7a3-50b2-e2ba-1c36-11184c7e08bf.jpeg)

SSHを有効化します。「＜Yes＞」にカーソルを移動させ、エンターキーを押します。
![WS000113.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/f7f9273d-88df-0f2d-c5d3-0065a4e4c42c.jpeg)

これでSSHは有効化されました。「＜Finish＞」にカーソルを移動させ、エンターキーを押し、raspi-configを終了します。
![WS000114.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/8afd6aa0-c497-313d-5fd8-09a68f74691e.jpeg)

## Non-InteractiveモードでSSHを有効化する
　Non-Interactiveモードでは、結果は0または1で表示され、0：YES(ENABLE)、1：NO(DISABLE)になります。
　
　まず、下記のコマンドを実行し、現在のSSHの設定を確認します。
```
$ sudo raspi-config nonint get_ssh
```

下記のように表示されます。
![WS000075.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/d297ffb8-afca-be53-772a-6c34f69c9267.jpeg)

この場合は、1：NO(DISABLE)なので、続いてSSHを有効化するコマンドを実行します。この時、0：YES(ENABLE)の場合はすでにSSHが有効化されています。
```
$ sudo raspi-config nonint do_ssh 0
```

設定の変更を再度、下記のコマンドで確認します。
```
$ sudo raspi-config nonint get_ssh
```

0：YES(ENABLE)と表示されればSSHが有効化されています。
![WS000083.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3113974/9c85bc27-644b-cb22-10ba-1e017ef048d6.jpeg)

# 終わりに
　今回はRaspberry PiをCUIから操作し、SSHを有効化する手順をご紹介しました。ぜひ参考にしてください。
　また、raspi-config固有の機能として、下記のコマンドでsshdのホストキーが存在しない場合に、ホストキーを生成できることなどが挙げられます。
```
$ ssh-key-gen -A
```

https://github.com/RPi-Distro/raspi-config/blob/master/raspi-config#L854