VirtualBoxのUbuntu VMで作業をする際、いちいちVMのGUI(またはターミナル)を使うのは面倒で使い勝手も悪いので、ホストマシンのターミナルからssh接続してVM内で作業できるように設定する。
環境
- macOS Big Sur Version 11.6.1
- Intel Core
- VirtualBox 6.1.28
- Ubuntu 20.04.3 (VM Image)
前提条件
- VirtualBoxでUbuntuのVM起動済み
- VMのネットワーク周り設定済み
- NAT
- ホストオンリーアダプター
設定手順
以下、VMのターミナルにて作業を進める。
ssh-serverのインストール
sudo apt install -y openssh-server
ssh-serverの起動
systemctl status ssh
を実行すると、
ssh.service ......
.
.
.
Active: acctive (running) ......
.
.
.
と表示されればssh-serverが起動しているのでOK。
もし起動してないようであれば、
sudo systemctl start ssh
で起動する。
また、VM再起動時にも自動でssh-serverが起動するように以下の設定をしておく。
sudo systemctl enable ssh
ホストマシンからの疎通確認
ホストマシンのターミナルからsshの疎通確認を行う。
ssh <VMのユーザー名>@<VMのIPアドレスまたはホスト名>
まだ鍵を登録していないので、上記のコマンドを実行するとパスワードを尋ねられる。パスワードを入力するとVMのターミナルに入ることができる。
公開鍵の登録(オプション)
ssh接続のたびにパスワードを入力するのは面倒なので、公開鍵を登録してパスワード入力なしでssh接続できるようにする。
まず、ホストマシンで鍵を生成してVMに公開鍵を渡す。
ssh-keygen -t rsa
鍵のファイル名が求められるので、任意の名前を入力する。ここではデフォルトのid_rsa
としておく。
次にscpを使ってVMに公開鍵を渡す。
scp ~/.ssh/id_rsa.pub <VMのユーザー名>@<VMのIPアドレスまたはホスト名>:~/
次にVMのターミナルで、ホストマシンから渡された公開鍵を登録する。
ホストマシンから渡された公開鍵があるディレクトリで次を実行。
cat id_rsa.pub >> ~/.ssh/authorized_keys
最後に、ホストマシン側でssh接続の際に指定した鍵を使うように~/.ssh/config
に設定をする。
以下、設定例
~/.ssh/config
Host ubuntu-vm
IdentityFile ~/.ssh/id_rsa
User <VMのユーザー名>
設定が正しければ、パスワード入力なしでVMにssh接続できるはず。
ssh ubuntu-vm
↓↓↓ こっからVM ↓↓↓
Welcome to Ubuntu 20.04.3 LTS (GNU/Linux 5.11.0-40-generic x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
0 updates can be applied immediately.
<VMのユーザー名>@ubuntu-vm:~$ pwd