centos7.6 にて sshd が起動しない(Failed to start OpenSSH server daemon)

# ■環境
OS:`CentOS Linux release 7.6.1810 (Core)`
SSH:`openssh-server-7.4p1-16.el7.x86_64`

# ■症状
OSインストール直後に確認された症状になります。

### ①SSHサービスが起動していない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/d477065d-a47f-1d86-52cc-0376322cb390.png)

```text:log
Dec 31 10:24:27 cent76-zc6 systemd: sshd.service holdoff time over, scheduling restart.
Dec 31 10:24:27 cent76-zc6 systemd: Stopped OpenSSH server daemon.
Dec 31 10:24:27 cent76-zc6 systemd: Starting OpenSSH Server Key Generation...
Dec 31 10:24:27 cent76-zc6 kernel: traps: ssh-keygen[6421] trap invalid opcode ip:7ffb8a169fff sp:7ffddf387db8 error:0 in libcrypto.so.1.0.2k[7ffb8a091000+234000]
Dec 31 10:24:27 cent76-zc6 sshd-keygen: Generating SSH2 RSA host key: /usr/sbin/sshd-keygen: 52 行:  6421 Illegal instruction     $KEYGEN -q -t rsa -f $RSA_KEY -C '' -N '' &>/dev/null
Dec 31 10:24:27 cent76-zc6 sshd-keygen: [失敗]
Dec 31 10:24:27 cent76-zc6 systemd: sshd-keygen.service: main process exited, code=exited, status=1/FAILURE
Dec 31 10:24:27 cent76-zc6 systemd: Failed to start OpenSSH Server Key Generation.
Dec 31 10:24:27 cent76-zc6 systemd: Unit sshd-keygen.service entered failed state.
Dec 31 10:24:27 cent76-zc6 systemd: sshd-keygen.service failed.
Dec 31 10:24:27 cent76-zc6 systemd: Starting OpenSSH server daemon...
Dec 31 10:24:27 cent76-zc6 sshd: Could not load host key: /etc/ssh/ssh_host_rsa_key
Dec 31 10:24:27 cent76-zc6 sshd: Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Dec 31 10:24:27 cent76-zc6 sshd: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Dec 31 10:24:27 cent76-zc6 sshd: sshd: no hostkeys available -- exiting.
Dec 31 10:24:27 cent76-zc6 systemd: sshd.service: main process exited, code=exited, status=1/FAILURE
Dec 31 10:24:27 cent76-zc6 systemd: Failed to start OpenSSH server daemon.
Dec 31 10:24:27 cent76-zc6 systemd: Unit sshd.service entered failed state.
Dec 31 10:24:27 cent76-zc6 systemd: sshd.service failed.
```

### ②`/etc/ssh`ディレクトリに鍵ファイルがない。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/ca903a08-bcec-9e61-4868-86f249a832ce.png)

:::note info
正常に動作する際には以下の鍵ファイルが存在しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/98eb9083-3d24-54ea-b4b2-4d4ff612d5cd.png)
:::

### ③`ssh-keygen`コマンドが失敗する。
`Illegal instruction`といった内容が表示されコマンドが失敗します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/9552142a-c024-6626-e63b-ef33b40c6bbd.png)


# ■解決策
`yum update`を利用しパッケージアップデートを行います。

## 手順① `yum.conf`ファイルの編集
OS自体のバージョンを上げないため、`yum.conf`ファイルに以下を追記します。

```text:yum.conf
# vi /etc/yum.conf
---------------------
exclude=centos-release* kernel*
---------------------
```

:::note warn
redhat系の場合は以下とします。
`exclude=redhat-release* kernel*`
:::


## 手順② パッケージ更新
以下コマンドでパッケージ更新を行います。

```text:update
# yum update -y
```

## 手順③ サービス確認
サービス起動状態を確認します。

```text:service
# systemctl status sshd
```


# ■うまくいかなかったこと
### ①OS再起動
```text:reboot
# shutdown -r now
```
→効果なし

### ②ssh関連パッケージの更新
```text:update
# yum update -y openssh*
```
→効果なし

### ③ssh関連パッケージのアンインストール、インストール
```text:update
# yum remove -y openssh*
# yum install -y openssh*
```
→効果なし


# ■その他
何かのパッケージが古い or 依存性のあるパッケージが足りていない可能性がありますが、デバッグするほどの余力がないのでここまで。
（余裕があればパッケージ一覧のbefore/afterでdiffしつつ、怪しいパッケージをupdate/installして確認していけば特定できる気がする ~~（無限に時間があれば）~~）