Mac 内に Linux 環境を作ってみる

この記事は、[株式会社エイチームフィナジーの Advent Calendar 2021](https://qiita.com/advent-calendar/2021/ateam-finergy) 17 日目の記事になります。
20 卒エンジニアの @tommy1038 が担当いたします。

みなさんは普段 Linux を触っていますでしょうか？
僕は基本的に Mac を使う人間で、あまり Linux を触ったことがありませんでした。
触る環境を作るために、VirtualBox を使えばできることは分かっていましたが、

- Mac 上に立ち上げた Linux を操作すると、ちょっとラグがある
- キー配列が若干違う
- Mac で検索したコマンドなどがコピペができない

のようなことがあり、ちょっと敬遠していました。

ですが最近、その仮想環境に ssh で接続すれば自身の Mac のターミナルから操作できるということを知り、自身の Mac に Linux の環境を構築して、楽しく触ることができました。
今回は、そのやり方を紹介してみます。

## VirtualBox のダウンロードとインストール

下記からダウンロードが可能です。
完了すれば、インストーラーの指示に従って、インストールを進めてください。

[Downloads – Oracle VM VirtualBox](https://www.virtualbox.org/wiki/Downloads)

## Ubuntu 用の仮想マシンの作成 & Ubuntu のインストール

今回は、Ubuntu の環境を用意してみます。
[Ubuntu Desktop 日本語 Remixのダウンロード \| Ubuntu Japanese Team](https://www.ubuntulinux.jp/products/JA-Localized/download)


CentOS や Debian の環境も同様に作ってみましたが、問題なく動作しました。
参考のリンクには、CentOS や Debian の環境構築を扱っている記事を貼ってみましたので、もしそちらの環境を作成してみたい方は見ていただけると幸いです。 🙏

Ubuntu に関しては、これらのサイトを参考にしながら作成してみました。

- [Linuxmania: VirtualBox を使おう \(Ubuntu\)](https://www.linuxmania.jp/virtualbox_01.html)
- [Windows10 上の VirtualBox に Ubuntu20\.04 をインストール \- Qiita](https://qiita.com/HirMtsd/items/225c20b77a7cd5194834#%E3%82%B9%E3%83%8A%E3%83%83%E3%83%97%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90)

Mac で作成していたので、若干 UI が違う箇所はありましたが、問題なく作成できると思います。

作成していて少し迷ったのが、ストレージを選択する際に下の画像の赤枠の箇所をクリックしたらディスクファイルの選択が表示される形になっていて、どこをクリックしたらわかりづらいなとは思いました。

![スクリーンショット 2021-12-15 0.05.37.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/a8981980-068c-dcfc-6859-f27ceb926b55.png)

また、今回は ssh でつないで挙動を見ていく、ということなので、こちらの場所では`最小インストール`を選択しました。
![スクリーンショット 2021-12-15 0.09.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/6770eb4c-12d7-9038-ffeb-bfe3032e56b3.png)

## Mac から Ubuntu に ssh で接続する

では本題の Mac から Ubuntu に接続していきましょう。
まずは、VirtualBox で Ubuntu の設定を変更します。

### ブリッジアダプターへの変更

仮想マシンの設定画面の`ネットワーク`タブを選択してください。
デフォルトでは、`NAT`になっていると思うので、`ブリッジアダプター`に変更しましょう。
![スクリーンショット 2021-12-15 0.35.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/f7ba3b14-c79a-2ad7-dc8b-297b98bf2142.png)
名前の部分は自分のマシンになるネットワークインターフェースを選ぶ場所になります。
Wi-Fiでの環境下であれば、変更せずに画像のように`en0: Wi-Fi(AirPort)`で問題ありません。有線で接続されている場合は、`en7: USB 10/000/1000 LAN`が表示されているかもしれません。有線の場合であれば、そちらを選択しましょう。

### Ubuntu に ssh をインストールする

Ubuntu を起動して、左下の`アプリケーションを表示する`をクリックすると、インストールされているアプリを確認することができます。
その中で、`端末`をクリックすると、ターミナルを開くことができます。

ssh で接続していきたいので、まずは下記のコマンドを入力して、ssh をインストールしましょう。

```
$ sudo apt-get install ssh
```

sudo でパスワードを求められますが、現在のアカウントのパスワードを入力すれば OK のはずです。
僕が作業した際は、うまくいかなかったので、一度パスワードを設定してみると、直りました。
[Ubuntu 16\.04: root でログインする \- Narrow Escape](https://www.hiroom2.com/2017/05/16/ubuntu-16-04-root%E3%81%A7%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B/)

### Mac 側でキーペア(秘密鍵と公開鍵)を作成 & 登録

#### 作成

```
$ cd ~/.ssh
$ ssh-keygen -f client_rsa -t rsa -b 2048
Enter passphrase: パスワードを設定する場合は入力してEnter。不要ならEnter。
Enter some passphrase again: もう一度同じように入力。
```

確認すると、以下のような感じ

```
$ ls ~/.ssh
client_rsa   client_rsa.pub
```

#### 登録

```
$ ssh-add -K ~/.ssh/client_rsa
```

### 鍵を Ubuntu に登録する

ssh-copy-id コマンドで、Ubuntu に鍵を登録します。まず、Ubuntu上で、IPアドレスの確認を行います。

![スクリーンショット 2021-12-15 0.40.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/728a8391-3427-3dfb-358a-e5763e7616c4.png)

IPアドレスが確認できたので、Mac側から鍵を登録してみます。ちなみに、いうまでもないかもしれませんが、Ubuntuでのユーザ名を`ryota`として入っています。

![スクリーンショット 2021-12-15 0.51.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/efd9a073-1859-ec8d-517d-cda9b93f11eb.png)

### 接続してみる

では、ssh で接続してみましょう。
`❯ ssh -i ~/.ssh/client_rsa (ユーザ名)@(IPアドレス)`
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/7e6f5f24-43a3-392f-a230-3f77eb647ed9.png)
こんな形で接続することができました。

## おまけ

ssh で接続できるようになりましたが、少しだけ設定を修正します。

- パスワードでのログインを禁止にする(公開鍵認証のみにするため)
- ポート番号をデフォルトの 22 から 5022 に変更
- ルートでのログインを禁止にする

の 3 点を修正してみます。

```
$ sudo apt-get install vim
$ sudo vim /etc/ssh/sshd_config
```

で、設定ファイルが立ち上がるので、以下の設定に変更させます。（変更項目のみ抜粋しています。）

```
Port 5022
PasswordAuthentication no
PermitRootLogin no
```

こちらの変更をして、再起動を行います。

```
systemctl restart ssh
```

これで、ポート番号を指定して接続できるようになりました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/153992/fac72d9d-1e2c-26bc-624e-0555f1ae325c.png)

## 最後に

これで、楽しく遊べるLinux環境が作れたかと思います。
実際、Ubuntuの環境を作ってみると、GUI上ではあまりラグは感じませんでしたが、日本語入力と英数入力で少しごたついたりしたので、Macのターミナルからアクセスできるのは、嬉しいかなと思います。
こんな感じでお手軽にLinux環境を用意できるので、敬遠してた方がおられましたら触るきっかけになれば嬉しいです。


## 参考

- [ssh 接続を鍵認証で行う](http://www.tooyama.org/ssh-key.html)
- [VirtualBox で Linux を使おう \| FJORD BOOT CAMP（フィヨルドブートキャンプ）](https://bootcamp.fjord.jp/articles/3)
- [Linux を扱えるようになろう\(環境構築編\) \- Qiita](https://qiita.com/gorilla0513/items/62d350639ab0834682e6)