Raspberry Pi ① 初期設定　--Mac編--

## 前提条件

- ラズパイにOSをインストール済であること
- ディスプレイ必要です

## 目的

- 自身のmacからSSHでラズパイに接続する
- その際に公開鍵認証でアクセスする

## 環境

- macOS: Catalina 10.15.7
- raspbian: 10.7

## 目次

1. user名変更
2. 公開鍵の作成
3. 公開鍵認証の設定
4. IP固定＆ポート変更
5. おまけ

## 内容
### __1. user名変更__

- ラズパイの初期情報
    - user:pi
    - password:raspberry

　このまま使用すると誰でも簡単にSSH接続できてしまうし、
　その他にも問題多数なのでまずはユーザー情報を変更する。
　やり方はいつかあるがここでは、ユーザー名とパスワードを変更するやり方で行う。
　直接変更できれば良いのだが、ログインしているユーザーの情報を直接変更することができないため
　一度別ユーザーを作成し、そちらでログイン後、変更していく。

```terminal:ユーザーの変更

　# '仮のユーザ(tmp)を作成する'
　sudo useradd -M tmp
　# 'tmpユーザをsudoグループに追加(そうしないとsudoが使えない)'
　sudo gpasswd -a tmp sudo
　# 'tmpユーザのパスワードを設定'
　sudo passwd tmp
　# 'ログアウトする'
　exit

```

　アカウントの作成が終わったら、SSH接続に必要なのでIPアドレスを確認する。

```terminal:IPアドレスの確認

　# 'ifconfigで情報を表示'
　ifconfig
　# '複数行出てくるが下記のような表示を探し、inetのところがIPアドレスなのでメモしておく'
　wlan0: flags=1111<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1111
        inet 111.111.11.1  netmask 255.255.255.0  broadcast 111.111.11.255
        inet6 fe11::1aa:1a4a:a1a1:1aa1  prefixlen 64  scopeid 0x20<link>

```

　ここまで確認したら、画面の表示をCLIに変更します。
　デスクトップのままだと、どこかでPiユーザーを使用しているらしく名前の変更ができません。
　設定方法は、左上のラズパイのロゴから
　「RaspberryPiの設定」 -> 「システムタブ選択(最初に選択されてる)」
　　-> 「boot(ブート)のをCLIに変更」 -> 「現在のユーザーでログインするからチェックを外す」
　　　-> 「インターフェース(interface)タブ選択」 -> 「SSHのところを有効にする」

　ここまで完了したらラズパイを再起動します。
　再起動後、macの方からSSHで接続。

```terminal:SSH接続コマンド

　# 'ssh [先ほど作成したユーザー名]@[ラスパイのIPアドレス] -p 22'
　ssh tmp@111.111.11.1 -p 22

```

　接続ができたら、Piユーザーの情報を変更します。
　rootユーザーにもパスワードを設定しておきましょう。
　(rootユーザーは元々存在し、名前変更不可のため後ほどSSHログインできないようにします)

```terminal:ユーザー名変更

　# 'usermod -lでユーザ名をpiからnewpiに変更'
　sudo usermod -l newpi pi
　# 'usermod -dでホームディレクトリを/home/piから/home/newpiに変更'
　sudo usermod -d /home/newpi -m newpi
　# 'groupmod -nでpiグループをnewpiグループに変更'
　sudo groupmod -n newpi pi
　# 'rootユーザーのパスワード変更'
　sudo passwd root
　# 再起動
　reboot

```

　これで変更完了。
　再起動と同時に、SSH接続が切れるので変更したユーザーでSSH接続を試みる。
　再接続できたら、tmpユーザーは不要なので削除する。

```terminal:SSH再接続＆tmpユーザーの削除

　ssh newpi@111.111.11.1 -p 22
　# '仮ユーザを削除(警告的なのが出るが、構わず削除)'
　sudo userdel tmp
　# 'newpiユーザのパスワードを変更(必要であれば)'
　sudo passwd newpi

```

### __2. 公開鍵の作成__

　まずはmac側のHOMEディレクトリ配下に.sshというディレクトリを作る。
　その後、そのディレクトリ内に鍵を作成。

```terminal:鍵の作成

　# 'mac側のホームディレクトリ配下に、.sshディレクトリの作成'
　mkdir ~/.ssh
　# '.sshディレクトリに移動'
　cd ~/.ssh
　# '鍵の作成'
　ssh-keygen -t rsa

```

　鍵の作成のコマンドを打つと下記の３つを順番に聞かれる。
　　・ 鍵ファイルを保存するフォルダの名前
　　・ パスフレーズ
　　・ パスフレーズ（確認用)

　全てエンターでも良いが、パスフレーズは入力しておくほうがベター。
　作成後、~/.sshの中に次のような2つのファイルが作成されている。

```terminal:鍵の種類

　# '秘密鍵'
　　id_rsa
　# '公開鍵'
　　id_rsa.pub

```

### __3. 公開鍵認証の設定__

　ラズパイ側に鍵を格納するディレクトリを作成。

```terminal

　# 'ラズパイ側のホームディレクトに、.sshディレクトリ作成'
　mkdir ~/.ssh

```

　作成後、公開鍵をmacからラズパイに送ります。

```terminal:鍵の送信

　# 'mac側の.sshディレクトリ内に移動'
　cd ~/.ssh
　# 'scp -r id_rsa.pub [ユーザー名]＠[ラズパイのIPアドレス:/home/[ユーザー名]/.ssh]'
　scp -r id_rsa.pub newpi＠111.111.11.1:/home/newpi/.ssh

```

　これで公開鍵の送信は完了です。
　次に、ラズパイ側で受け取った鍵の情報を書き出し、鍵のパーミッションの変更をしていきます。

```terminal:パーミッションの変更

　# 'ラズパイ側の.sshディレクトリに移動'
　cd ~/.ssh/
　# '公開鍵の情報を使用する用に書き出す'
　cat id_rsa.pub >> authorizedkeys
　# 'authorized_keysのパーミッションを600に変更'
　chmod 600 authorized_keys
　# '.sshフォルダのパーミッションを700に変更（うまくいかなければsudoをつける）'
　chmod 700 ~/.ssh
　# '公開鍵ファイルを削除'
　rm ~/.ssh/id_rsa.pub

```

　これで基本的な設定は完了。接続できるかテスト・

```terminal

　# 'mac側の.sshディレクトリに移動'
　cd ~/.ssh
　# 'ssh [ユーザー名]@[ラズパイのIP] -i [秘密鍵] -p 22'
　ssh newpi@111.111.11.1 -i id_rsa -p 22
　
```

　パスワードを要求されるので、公開鍵の生成の際に入力したパスワードを入力。
　ログインできたら完了です。

　せっかくSSHログインできるようにしたので、パスワードログイン不可にしましょう。
　ラズパイ側の設定ファイルを変更します。
　ついでなので他のもいじりますが必要に応じて変えてください。
　変更するのは下記３点
　　・ rootユーザーのログイン禁止
　　・ パスワード認証を無効化して公開鍵認証のみを許可
　　・ 空パスワードを無効

```terminal:ssh関連の設定ファイルの変更

　# 'vimで設定ファイルを開く(vim意外で開きたい方はviの部分変えてください)'
　sudo vi /etc/ssh/sshd_config
　# 'rootユーザーのログイン禁止'
　# '#PermitRootLogin prohibit-password」を「PermitRootLogin no」に変更'
　PermitRootLogin no
　# 'パスワード認証を無効化して公開鍵認証のみを許可'
　# '「#PasswordAuthentication」を「PasswordAuthentication no」に変更'
　PasswordAuthentication no
　# '空パスワードを無効'
　# '「#PermitEmptyPasswords no」を「PermitEmptyPasswords no」に変更'
　PermitEmptyPasswords no:wq


```

　この設定ファイルにはいろんな情報が書いてあるので、探すの大変かと思うので
　vimの場合コマンドモードで、 /[検索したい文字]
　とすると検索できるので便利。

　ここまで終わったら再度SSH接続を試みて成功すれば完了。

### __4. IP固定＆ポート変更__
　
　IPアドレスは、自インターネット内で自動で振り分けられるため
　変更する可能性があるので、IPを毎回固定になるような設定をする。

```terminal:IP固定

　# 'IPの設定は/etc/dhcpcd.conf'
　sudo vi /etc/dhcpcd.conf
　# '下記設定を書き込む'
　interface wlan0
　static ip_address=192.168.１１.111/24
　static routers=192.168.11.1
　static domain_name_servers=192.168.11.1
　# 'ラズパイ再起動'
　reboot

```

　ip_addressに好きなIPを設定。
　routersというのはデフォルトゲートウェイに当たります。
　上記はBuffaloのルーターでの設定です。
　Buffaloルーターをお使いの場合は、下2つは同じ値で大丈夫だと思います。
　再起動後、ip -a でwlan0のところのinetが192.168.11.１１１/24が表示されていれば成功。
　
　__想定外のエラー__
　自分の場合、この設定でうまくいかなかった。
　結果的にはラズパイ側のwifiの設定を変えたら成功した。
　やったことは下記。

```terminal:wifiの設定変更

　# 'wifiの設定を普通に行うとパスワードが平文で入っているため変更'
　wpa_passphrase "Wi-FiのSSID" "パスフレーズ"
　# 'このように表示されるので全てコピー'
　network={
        ssid="Wi-FiのSSID"
        #psk="パスフレーズ"
        psk=xxxxxx
　}
　# 'wifiの設定ファイルは/etc/wpa_supplicant/wpa_supplicant.conf'
　sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
　# '先ほどのnetworkの設定をペーストし、#psk="パスフレーズ"の部分を削除して保存'
　network={
        ssid="Wi-FiのSSID"
        psk=xxxxxx
　}
　# 'ラズパイ再起動'
　reboot

```

　自分の場合はこれで解決できたので参考までに。

### __5. おまけ__

　毎度毎度、sshの長々したコマンドを打つのは大分めんどくさいと思います。
　そんなときはエイリアスを登録すると良いです。
　まずはエイリアスを書くためのファイルを作りましょう。

```terminal:configファイルの作成

　# 'touch [秘密鍵が保管されているディレクトリ]/config'
　touch ~/.ssh/config
　# 作成したファイルを開く
　vi ~/.ssh/config

```
　configファイルの中に情報を書き込みます。
　この際、Hostのところに記載する文字でSSH接続するので、覚えやすいものにすると良い。

```terminal:configファイルの編集

　# 'フォーマット'
　Host [任意のホスト名]
    HostName [ラズパイのIP]
    User [ラズパイのユーザー名]
    port [変更していなければ２２]
    IdentityFile [秘密鍵のパス]

　# '例'
　Host newpi
    HostName 111.111.11.1
    User newpi
    port 22
    IdentityFile ~/.ssh/id_rsa

```

　これでエイリアスの登録は完了です。
　早速、接続してみましょう。

```terminal:エイリアスでSSH接続

　# 'ssh configで設定したHost名'
　ssh newpi

```

　これで毎回長々とコマンド打たなくて済みます！

### __続く。。。__

　このラズパイはファイルサーバー化する予定なので続きを近日公開するかも？？