読者です 読者をやめる 読者になる 読者になる

ハトネコエ Web がくしゅうちょう

プログラミングとかAndroid

Virtual Box で起動している Linux (Fedora22) のサーバーに、ホストOSのWindowsのWebブラウザからアクセス!

タイトル長い・・・。
でも、前回の記事からようやく成功しました。うれしい!

前回の記事はこれ ↓

1. できるようになること

ホストOSのWindowsから、Virtual Box内で起動しているFedora22のファイルを見られるようになります。
また、ホストOSのWebブラウザから、
前回の記事で言うところの localhost.localdomain にアクセスできるようになります。

参考にしたページ: Qoosky - VirtualBoxでWindowsのゲストOSとしてCentOSを動作させる

2. Windows 側ですること

Virtual Box の設定

仮想環境の設定、ネットワークのところ、
アダプター1はNATになっていると思いますが、
新たにアダプター2を設定します。

大事なのは、「割り当て」の部分を「ホストオンリーアダプター」にすることです。
私はこのようになりました。
f:id:nekonenene:20150927084148j:plain

あと、Windows用ソフトの TeraTerm をダウンロードしてインストールしてきてください。
Tera Term (テラターム) プロジェクト日本語トップページ - OSDN

3. 仮想環境の立ち上げ

そしたら、仮想環境(この例ではFedora22)を立ち上げてください。
なお、前回の記事の設定は終わっているものとします。

コンソールを開いて、suでとりあえずスーパーユーザになってもらって、
ip aコマンドを打ってください。

私の環境ではこのように出力されました。

1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp0s3:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:f5:43:d5 brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic enp0s3
       valid_lft 83277sec preferred_lft 83277sec
    inet6 fe80::a00:27ff:fef5:43d5/64 scope link 
       valid_lft forever preferred_lft forever
3: enp0s8:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:02:63:48 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.10/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe02:6348/64 scope link 
       valid_lft forever preferred_lft forever

大事なのは3番目。
ここが先ほど追加したアダプター2です。
今回は enp0s8 と表示がありますが、これがのちのち大事になります。

4. ふたたびWindowsPowerShellを立ち上げる。

コマンドプロンプトでも大丈夫かと思いますが、私はPowerShell派なので
PowerShellを使った説明となります。

コマンドipconfigを打ってください。
ダーっと表示が出ると思いますが、
ここで大事になるのが

イーサネット アダプター VirtualBox Host-Only Network:

  接続固有の DNS サフィックス . . . . .:
  リンクローカル IPv6 アドレス. . . . .: fe80::d0ff:4ff2:a63b:6e82%22
  IPv4 アドレス . . . . . . . . . . . .: 192.168.56.1
  サブネット マスク . . . . . . . . . .: 255.255.255.0
  デフォルト ゲートウェイ . . . . . . .:

の部分。

IPアドレスは人によって違うと思います。

5. Linux のコンソールの方に戻る

コマンド

emacs /etc/sysconfig/network-scripts/ifcfg-enp0s8 &

を打って、ifcfg-enp0s8 ファイルを作り、設定します。

私は enp0s8 ですが、手順 3. で出た文字列を使ってくださいね。

ここの設定はこう書きます。

DEVICE=enp0s8
HWADDR=08:00:27:02:63:48
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
IPADDR=192.168.56.15
NETMASK=255.255.255.0
NETWORK=192.168.56.1

人によって設定が変わるところは以下の通りです。
DEVICE= は、手順 3. で出た文字列を。
NETMASK= は、手順 4. で出たサブネットマスクの数列を。
NETWORK= は、手順 4. で出た IPv4 アドレスの数列を。

HWADDR= は、手順 2. の設定画面で表示されているMACアドレスの数値
2桁ずつコロン( : )で挟んで書いていってください。

(もう1回先ほどの画面を貼っておきます。
 文字が薄くてわかりづらいですが、「MACアドレス」と書かれた欄があります)
f:id:nekonenene:20150927084148j:plain

IPADDR= の数値は、まあまあ自由がききますが、
IPv4 アドレスと似たような値にしておくといいです。
192.168.56.255 とか設定するとまずいので、一番右の値は 5 ~ 250 くらいにしといてください。
NETWORK= の値とかぶってるのはたぶんまずいと思います。

そして、保存して閉じたら、

service sshd start
  # これは以下のコマンドとは関係ありませんが、手順 6. でSSHを使うための下準備です
service httpd restart
service network restart

ip a

とコマンドを打ってみてください。

3: enp0s8:  mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:02:63:48 brd ff:ff:ff:ff:ff:ff
    inet 192.168.56.15/24 brd 192.168.56.255 scope global enp0s8
       valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe02:6348/64 scope link 
       valid_lft forever preferred_lft forever

このように、inet と書かれた以降の数値が
IPADDR で指定した数値と同じことになっているのが確認できるでしょう。
IPアドレスが固定されましたので、再起動したときにもIPアドレスが変わる心配が無く安心です。

《 追記: 2015/10/09 》
前回の記事で

chkconfig httpd on
  # Linuxへログイン時に Apache が起動するように設定
  # (Windowsで言うところの「スタートアップ」への登録)

とやりましたが、Linux 起動時に SSH が作動するよう、同様に

chkconfig sshd on

とコマンドして、設定を上書きしておいてください。

6. Windows に戻り、 TeraTerm を開きます。

ようやくTeraTermの出番です。
TeraTermは、便利なSSH接続をやってくれます。

TeraTermを起動すると接続設定が聞かれますので、
以下のように、ホストの欄に、先ほど指定した IPADDR の数値を記入します。
f:id:nekonenene:20150927091714j:plain

んで、OKを押すとSSH鍵を作成したのち、
SSH認証の画面になりますので、
このようにユーザー名を root 、パスワードには
仮想環境(ゲストOS)の方で設定しているスーパーユーザのパスワードを記入してください。
f:id:nekonenene:20150927092016j:plain

これでOKすると、
TeraTermがコンソールとなり、ゲストOSのコンソールに入り込むことができます。

f:id:nekonenene:20150927092306j:plain
(ためしに、dnf コマンドを入力してみました)

7. SSH 転送を利用して、localhost に送り、Webブラウザでのアクセスを可能に

TeraTermの「設定」から「SSH転送」を選んでください。
「追加」で、例えば以下のように入力します。
f:id:nekonenene:20150927092718j:plain

「ローカルのポート」の欄はわりと自由ですが、
「8880」や「8800」にするのが一般的です。

「リモート側ホスト」の欄は、手順 5. で設定し、先ほどの手順 6. でも使用しました
IPADDR の値です。

「ポート」の欄は 80 です。
http ポートを示す値ですので、
ここのところを 80 でなく、http と書いても実は同様に接続できます。
(まあ、80 を覚えるのは必要ですので 80 と書いた方がいいでしょう)

8. Web ブラウザでアクセスしてみる

上の設定が終わりましたら、準備は整いました。
Webブラウザをひらき、先ほど指定したローカルポート 8800 にアクセスしてみましょう。

URLを打ち込むところに、こう打ち込むだけです。

localhost:8800

また、前回作りました php ファイルにアクセスするなら、

localhost:8800/phpinfo.php

です。以上です。

extra. TeraTermの接続でつまずく場合

手順 6. の TeraTermSSH接続でつまずいている人は、
もしかして
/etc/ssh/sshd_config
をいじってしまってはいないでしょうか?

ここで接続の制限を厳しくしてしまっているために接続できない、ということもあります。
もしいじってたら、
config をいじる前に sshd_config-org というオリジナルファイル(デフォルトの状態のバックアップ)を同階層に作っていると思いますので、
そちらをコピーしてくるか、
バックアップとか作ってなかった人は、Virtual Box なんだし、
新しく Fedora OS 作って、そこの sshd_config をコピーしてくればいいと思います。

config をデフォルトからいじる前にバックアップ作っとくの超大事。