Path of MistyWind

紅茶とゲームが大好きな関西のエンジニアのひとりごと

VirtualBox上のUbuntuにホストOSからSSH接続

久しぶりにVirtualBoxを起動したら、完全にVMのパスワードを忘れていた。
VMを作り直した時に、接続できるまでもたもたしたので覚え書き。
(一度やったはずなんだけど…)

とりあえずはVirtualBoxで適当なVMを立てる。
Ubuntu 18.04 LTS の iso を公式サイトから落としてインストール。
以下、最小インストールした前提で記載。

ネットワーク設定

VirtualBoxはデフォルトでホストオンリーアダプター用のネットワークが作られる。
192.168.56.2~99 が固定IPで割り当て可のアドレスになっているので、
素直にその中からSSH接続用の固定IPを選ぶ。

VMの設定より「ネットワーク」を開き、
適当なアダプターに「ホストオンリーアダプター」を追加。
自分は、アダプター1はNAT、アダプター2はホストオンリーアダプター。
正直、ネットワークの事をきちんと分かってないけど、
NATの方はVMからでもホストOS経由でインターネットを使えるようにしていて、
ホストオンリーアダプターはホストOS-ゲストOS間しか通信できない認識。

IPアドレス固定

ネットワーク設定後にUbuntu上で確認。
ifconfigが入ってなかったので入れた。

$ sudo apt install net-tools
$ ifconfig

インタフェース名が3つ出てくる。

  • enp0s3: NATのやつ
  • enp0s8: ホストオンリーアダプターのやつ
  • lo: Ubuntuデフォルトでいるやつ

Ubuntu 18.04 からは、
IP固定の時に /etc/network/interfaces を設定するのではなく、
netplanという方に設定する。らしい。
ホストオンリーアダプターのIPを固定する。
終わったら再起動なりすると適用される。

$ sudo vi /etc/netplan/01-network-manager-all.yaml

-----
networkの下階層に以下を追加
  ethernets:
    enp0s8:
      addresses: [192.168.56.2/24]

sshd_config設定

今回のVMは常時立ち上げておくわけではないけど、
一応軽くセキュリティ設定をする。
設定が終わったら再起動なりする。

$ sudo apt install openssh-server
$ sudo vi /etc/ssh/sshd_config

sshd_configは以下を設定した。

  • Port お好きなポート番号
  • LoginGraceTime 30s(デフォルトは2分)
  • PermitRootLogin no
  • PasswordAuthentication no
  • PermitEmptyPasswords no
  • AllowUsers お好きなユーザ

キーペアの作成

~/.sshディレクトリを作成し、ssh-keygenでキーペアを作成。
オプションはお好きにしてください。
authorized_keys には接続許可する公開鍵を入れておく。

$ mkdir .ssh
$ chmod 700 .ssh
$ cd .ssh/
$ ssh-keygen -t rsa -b 4096 -C "hoge" -f hoge
$ cat hoge.pub > authorized_keys
$ chmod 600 ./*

秘密鍵の方はホストOSに移してください。
公開鍵暗号としては接続元の方でキーペアを生成し、
公開鍵の方を接続先に移動するのが正しいのですが、
今回はプライベートで砂場にするVMなのでこれで…。
(Linuxでコマンド打って鍵作る方がWindowsより楽だし…)

あとはホストOSから設定した固定IP・ポート番号・ユーザ・秘密鍵で接続できるはず!