初学者向け：VirtualBox上で構築したUbuntuサーバーにrootユーザーで直接SSH接続する設定方法

## はじめに
前回、[構築したUbuntuサーバー](https://qiita.com/free-honda/items/de95a3df84b9764b56e9)にrootユーザーでSSH接続を試みたところ、直接ログインができないことが判明しました。

:::note info
***Ansibleのクライアントサーバーとして使用する予定でしたが、この問題を解決しないと後続の作業に進めないため、対応していきます。***
:::

***本記事では、その原因特定から解決方法までをまとめてご紹介します。***

## 前提知識
本記事では、主にrootユーザーでSSH接続を設定する方法について解説します。

:::note warn
***VirtualBoxやUbuntuに関しての基礎知識については、以下の記事をご参考ください。***
:::

**VirtualBox関連の記事**

https://qiita.com/free-honda/items/ca757d6414a8ea344ea1

https://qiita.com/free-honda/items/bdce257a3407e1bb43b5

**SSH関連の記事**

https://qiita.com/free-honda/items/96a28eb26c02e596f908

https://qiita.com/free-honda/items/a215ebb22140fe11d789

**Ubuntu関連の記事**

https://qiita.com/tags/ubuntu

## 困っていたこと
自宅のVirtualBox上にサーバーを構築しましたが、SSHやTeraTermを使用してrootユーザーで直接ログインしようとしたところ、以下のエラーが表示されました。

```bash
[root@HONDA-TEST ~]# ssh root@192.168.1.7
root@192.168.1.7's password:
Permission denied, please try again.
root@192.168.1.7's password:
```

***補足として、一般ユーザーでSSH接続した後、rootユーザーに切り替えることは可能な状態です。***

```bash
honda@honda-ubuntu:~$ sudo su -
[sudo] password for honda: 
root@honda-ubuntu:~# 
```


## 原因特定してみた
このエラーは、以下のいずれかの原因が考えられます。

:::note alert
- **入力したパスワードが正しくない。**
- **リモートサーバー（```192.168.1.7```）のSSH設定が適切に構成されていない。**
:::

まず、リモートサーバーに直接アクセスし、rootユーザーのパスワードをリセットしてみました。

```bash
passwd
```

新しいパスワードを設定しましたが、それでも問題は解決しませんでした。


:::note warn
***そこで、SSH設定ファイルが問題の原因であると切り分けました。***
:::

リモートサーバーのSSH設定ファイル（```/etc/ssh/sshd_config```）を確認し、以下の設定をチェックしました。

**```PermitRootLogin``` の設定**

```bash
root@honda-ubuntu:~# cat /etc/ssh/sshd_config | grep PermitRootLogin
#PermitRootLogin prohibit-password
# the setting of "PermitRootLogin prohibit-password".
```

***問題は、```#PermitRootLogin```がコメントアウトされており、適切に有効化されていないことでした。***

:::note info
***結論として、```/etc/ssh/sshd_config``` の中身を一部修正することで問題は解決します！***
:::

## 実際に解決してみた

:::note warn
***設定ファイルを編集する際は、事前にバックアップを取ることを強くお勧めします。***
:::


### 1.SSH設定の確認
リモートサーバーのSSH設定ファイル ```/etc/ssh/sshd_config``` を確認し、以下の設定を確認・変更します。

**```PermitRootLogin``` の設定**

```bash
PermitRootLogin yes
```

この項目が ```no``` に設定されている場合、root ユーザーでのSSHログインが禁止されています。```yes``` に変更してください。

### 2. SSHサービスの再起動
設定を編集した後、以下のコマンドを実行してSSHサービスを再起動します。

```bash
sudo systemctl restart ssh
```

## 再度、rootユーザーでSSH接続を試みる
以下のコマンドを実行して、rootユーザーでSSH接続を試みます。

```bash
ssh root@192.168.1.7
```

今回はMacBookのターミナルからSSHコマンドを使用し、rootユーザーで直接ログインすることができました。

```bash
➜  ~ git:(main) ✗ ssh root@192.168.1.7
Warning: Permanently added '192.168.1.7' (ED25519) to the list of known hosts.
root@192.168.1.7's password: 
Welcome to Ubuntu 24.04.1 LTS (GNU/Linux 6.8.0-51-generic x86_64)

・・・（省略）

Last login: Tue Dec 31 07:33:32 2024 from 192.168.1.9
root@honda-ubuntu:~# 
```

***正しいパスワードを入力して接続が成功しました！これで問題解決です！***

## まとめ

今回は、構築したサーバーに対してrootユーザーで直接SSH接続ができない問題について、原因の特定から解決までを行いました。

:::note
***今日はAnsibleの学習を進める予定でしたが、それ以前にサーバー環境の構築に時間を費やしてしまいました（笑）。***
:::

***とはいえ、一つ一つの技術に丁寧に向き合うことで、自分自身のスキルアップにつながると信じています...。***

***この記事が、同じ問題に直面した方の参考になれば幸いです！***

## 参考記事

https://kyoruni.hatenablog.com/entry/permit-root-login-not-working

https://qiita.com/ine1127/items/b50b9a8f831736cf14ea

https://atmarkit.itmedia.co.jp/flinux/rensai/linuxtips/422sshokroot.html