仮想マシンにTera TermでSSH接続する~その3~
やっとこさSSH接続を行う段階に至った。長かったなあ。
接続方式としてはNAT、NATネットワーク、ブリッジアダプターを取り上げてみようと思う。
参考にした記事
VirtualBox の仮想マシンに Tera Term で SSH 接続する手順 (ポートフォワーディング)
VirtualBox + CentOS 7にTeratermを使ってsshでログインする
VirtualBox上のゲストOSにSSHで接続する
VirtualBoxでGuestOSのアプリケーションに外部からアクセスする方法
【VirtualBox】NATネットワークでゲストPC同士を通信させる
NAT
対象仮想マシンの[設定]>[ネットワーク]>[アダプター1]で[割り当て]を「NAT」に設定し、[高度]>[ポートフォワーディング]をクリック。
ポートフォワーディングルール管理画面が表示されるため、ルール追加のアイコンをクリック。
以下の内容を記入する
・名前:SSH Connection(何でもよい)
・プロトコル:TCP
・ホストIP:
・ホストポート:22222(使われていないポートであれば何でもよい)
・ゲストIP:
・ゲストポート:22
↑ポート番号22222が使用されていないことの確認。
NATではゲストPC-ホストPC間の仮想ルータによる接続を行うため、ホストPCからのSSH接続を行うことができないのであった。そこでホストPC(仮想ルータ)の特定のポートに対する接続をゲストPCに流す設定を行った、ということになる。
Tera Termを起動し接続を試みると接続が上手くいった。やったね!!!!
ローカルホスト(ループバック・アドレス)への接続であればよいので
でもよいし、コマンドプロンプトから "ipconfig" 叩いて取得したホストPCのプライベートIPアドレスを指定してやってもよい。
ちなみにホストOSと同一LANに接続した別端末(要は家族のPC)から上記と同じようにプライベートIPアドレスとポートを指定してやったところ正常に接続することができた。やったね!!!!
家族のPCからホストOS(仮想ルータ)ポート2222に届いたアクセスを仮想ルータの先にあるゲストOSに流す。おお、ポートフォワーディング元来のイメージに近い。
ポートフォワーディングって本来はLAN上のどの端末に通信を流すかを決めることだと理解したけど、VirtualBox NATの場合はどのLANに流すかを決めている感じ。
こっちは1つの仮想LANに対して1台の仮想マシンしか構築されないしそういう違いはあるかなー。
また、今回はホストOS(仮想ルータ)ポート22222へのアクセスをゲストOSのポート22に流す設定だけをしておりIPアドレスについては空白のまま放置しているが(VirtualBoxのDHCP機能が自動で振ってくれる?)、敢えて設定するならばこうだろう。
・名前:SSH Connection
・プロトコル:TCP
・ホストIP:
・ホストポート:22222
・ゲストIP:10.0.2.15
・ゲストポート:22
VirtualBoxのNATアダプターを設定した際に仮想マシンに割り当てられるプライベートIPアドレスは10.0.2.15だったので、これを指定すればよい。
※一応ゲストOS側で "ifconfig" 叩いて確認するとIPアドレスは確かに10.0.2.15が割り振られている。
NATネットワーク
NATの場合は1つの仮想LAN上に1台のゲストPCが構築されるイメージだったが、NATネットワークは1つの仮想LAN上に複数のゲストPCを構築することができる。
ホストPCやインターネット側からゲストPCへの接続を行いたい場合はNAT同様にポートフォワーディングを行うことになる。
さて、設定を進めていく。
VirtualBox画面からファイル>環境設定>ネットワークと進み、下記画像のアイコンをクリックするとNATネットワーク設定が作成される。
接続の詳細を確認しておく。
次にゲストPCのネットワーク設定を行う。ネットワーク設定を開き、以下の設定を施す。
1. アダプター1については「NAT」を選択しておく。ポートフォワーディングルールをいい感じに設定する(ポート番号だけ設定すればよい)。
2. アダプター2については「NATネットワーク」を選択する(ネットワーク名:NatNetwork)
上記設定を行った仮想マシン2台を起動し "ifconfig" を叩いてみるとVirtualBoxのDHCP機能によってIPアドレスが割り振られていることを確認できた。
SSH接続も上手くいく。
NATネットワークでのSSH接続を行うだけならこれで十分なのだが、せっかくなのでポートフォワーディングルールにはIPアドレスの指定も含めてやろうと思う。完全に自己満足で。
つまり、ゲストPCのIPアドレスを固定してポートフォワーディングルールのIPアドレスの欄を埋める。
CentOS 7でローカルIPを固定する
CentOS7 IPアドレスを固定する
まず、/etc/sysconfig/network-scripts/ifcfg-enp0s3 のバックアップを取っておく(root権限)。
# cp /etc/sysconfig/network-scripts/ifcfg-enp0s3 /etc/sysconfig/network-scripts/ifcfg-enp0s3_org
ifcfg-enp0s3に対して以下の変更を施す(root権限)。
1. BOOTPROTO=dhcp → BOOTPROTO=none と変更
2. 以下を追記
HWADDR=[ifconfigで調べたenp0s3のMACアドレス]
IPADDR=[固定したいIPアドレス]
NETMASK=[ifconfigで調べたenp0s3のサブネットマスク]
GATEWAY=10.0.2.2
編集が完了したら仮想マシンを再起動して、IPアドレスが反映されていることを確認する(参考記事ではネットワーク設定反映コマンドを叩いていたけど何故か上手くいかなかった)。
OK!!!!
あとはVirtualBox NAT設定でポートフォワーディングルールを上記のIPアドレスを使って決めてやればよい。
ゲストPCのIPアドレスを固定した後に上記ポートフォワーディングルールでデタラメなIPアドレスを指定すると接続に失敗した(無論、正しいIPアドレスで接続もできた)。
NATの時と同じ要領で図示をすると以下のようになる。
VirtualBox NATの時はゲストPCへの通信をどのLANに流すかポートフォワーディングルールで決めている感じだったが、NATネットワークではどの端末(どのIPアドレス)に流すかを設定するようになる。元来のポートフォワーディングの概念とピッタリ合っている!
ブリッジアダプター
VirtualBoxから対象仮想マシンのネットワーク設定を開き、アダプター1をブリッジアダプターにする。だけ。
ブリッジアダプター接続の仮想マシンを2台用意してifconifgを叩いてみるとそれぞれそれっぽいプライベートIPアドレスが割り振られているし、
ホストPCからのping疎通も通った。
というわけで同一LAN上に新たに仮想マシンが増えたような形になっていることを確認することができた。
SSH接続は当然このIPアドレスを指定してやればよいわけで、
接続完了。
あとはゲストPCに固定IPアドレスを振ってやる。
設定内容の詳細については
CentOS 7でローカルIPを固定する
を参照するとよいだろう。
/etc/sysconfig/network-scripts/ifcfg-enp0s3 の編集内容は
1. BOOTPROTO=dhcp → BOOTPROTO=static と変更
2. 以下を追記
HWADDR=[ifconfigで調べたenp0s3のMACアドレス] ← 要らないと思う
IPADDR=[固定したいIPアドレス]
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
DNS1=192.168.11.1
再起動すれば設定反映される。
この記事が気に入ったらサポートをしてみませんか?