【Virtual Box】CentOS7.9導入＆ssh接続までを行ってみた(NAT接続)


CentOS環境下で検証作業を行いたかった為、VirtualBoxを使用してVMを作りました。
イメージファイル落として起動するまでは、記事が多いので省きます。

ネットワーク関連の設定からやっていこうと思います。

「設定」　→　「ネットワーク」 をクリックして下さい。
設定の内容を確認します。デフォルトでは、割り当てが「NAT」で設定されているかと思います。※ネットワークアダプターが有効になっていない場合は、有効にして下さい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710307/6cfd62b8-be9a-34ec-01f9-c9fdb6f0f4ef.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710307/ebd7c038-beb3-6cd3-61ec-d5ceeb3f3e0c.png)

公式マニュアルの確認するところ、NATはVirtualBox内部のプライベート・ネットワークに接続され、ホストからゲストの認識は行えないようです。ホストからは何もできないのかな？と考えましたが、ポートフォワーディング機能を使うと、ホスト上の特定ポートで受信したデータをゲストの何処かしらのポートに再送信出来るようです。

ssh等を実行する為には、ポートフォワーディングが必要というわけです。設定していきます。

「ポートフォワーディング」をクリックすると、以下のような画面が出てくると思います。
＋マークを押して、設定を行う事ができます。
ホストポートの2222で受信したデータを、ゲストポートの22に転送するようにします。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2710307/5bc19dc0-5ed9-d7a2-e058-2176a9135ee3.png)


これで、VirtualBoxの設定は終わりです。
ネットワークの設定は人によって違いがあるので、参考程度にして頂ければと思います。

お次は、ゲストOS側の設定を行っていきます。
/etc/sshd配下にあるsshd_configの編集を行います。

コマンドに不慣れな方がいるかもしれないので、少し丁寧に書いていきます。
pwdコマンドは、カレントディレクトリの表示。
cdコマンドは、ディレクトリを移動するコマンドです。下記のサンプルでは、ログイン後にpwdコマンドで現在地を確認。その後、cdコマンドで/etc/sshの移動を行っています。
../は、一つ上の階層を表します。

```:プロンプト画面
[root@localhost ~]# pwd
/root
[root@localhost ~]# cd ../etc/ssh
[root@localhost ssh]# pwd
/etc/ssh
```

ll(ls -lのエイリアス)コマンドを使用して、sshd_configの存在を確認します。
sshd_configの編集を行っていこうと思いますが、設定ファイル関連をいじる場合はコピーをとって作業に入ったほうがよいです。失敗しても、元に戻せます。
cpコマンドを実行します。権限/タイムスタンプも保持したままコピーしたいので、-pオプションを使用します。
※cpコマンドはファイルのコピーを行え、lsコマンドはファイル・フォルダの一覧を表示する。

```:プロンプト画面
[root@localhost ssh]# ll
-rw-r--r--. 1 root root     581843  8月  9  2019 moduli
-rw-r--r--. 1 root root       2276  8月  9  2019 ssh_config
-rw-------. 1 root root       3907  6月 30 21:09 sshd_config
[root@localhost ssh]# cp -p sshd_config sshd_config_bk
[root@localhost ssh]# ll
-rw-r--r--. 1 root root     581843  8月  9  2019 moduli
-rw-r--r--. 1 root root       2276  8月  9  2019 ssh_config
-rw-------. 1 root root       3907  6月 30 21:09 sshd_config
-rw-------. 1 root root       3907  6月 30 21:09 sshd_config_bk
```

編集を行います。
viコマンドを実行して、ファイルの編集を行っていきます。
中に色々書いていますが、PasswordAuthentication と記載されている行の確認のみを行います。スクロールして探してください。
ここがyesであれば、編集する必要はありません。:キーを押して、q!を入力して下さい。
ファイルの編集が終了して、元のコマンドが入力できる状態に戻ります。

noの場合は、yesに変更する必要があります。iキーを押して、ファイルに書き込みを行えるモードになります。
no → yes　に書き換えた後に、Escキー→:キー順番で押して、wqを入力して下さい。ファイルが保存された状態で、元のコマンドが入力できる状態に戻ります。

上記確認後に、sshdサービスの再起動を行います。
systemctlコマンドを使用します。(サービスの起動やステータスの確認等を行えます。)

```:プロンプト画面
[root@localhost ssh]# systemctl restart sshd
```

nmcliコマンドでネットワークの状況を確認します。
自分の環境下では、切断されていましたので接続させます。
Connection up デバイス名 で接続出来ます。

```:プロンプト画面
[root@localhost ssh]# nmcli device
DEVICE TYPE     STATE        CONNECTION
enp0s1 ethernet disconnected --
[root@localhost ssh]# nmcli connection up enp0s1
[root@localhost ssh]# nmcli device
DEVICE TYPE     STATE        CONNECTION
enp0s1 ethernet connected    --
```

次回以降の起動時に自動接続するように下記コマンドを実行します。
その後、network.serviceの再起動を行います。

```:プロンプト画面
[root@localhost ssh]# nmcli connection modify enp0s1 connection.autoconnect yes
[root@localhost ssh]# systemctl restart network.service
```

後はsshコマンドを実施するだけです。
ホストOSはwindows11でしたので、Powershellからsshコマンドを実施します。
成功すると、ゲストOSに接続する事が出来ます。

```:プロンプト画面
PS C:\> ssh test_01@localhost -p 2222
test_01@localhost's password:
[test_01@localhost ~]$
```

以上です。参考になれば幸いです。