Virtual BoxでCentOS7 をインストールする

以下の補足資料というか自分(Hamada)用メモです。WIndowsでの作業を想定しています。

https://wiki.infra-workshop.tech/%E5%8B%89%E5%BC%B7%E4%BC%9A%E3%83%AD%E3%82%B0/2018/01/03/Linux%E3%81%AB%E8%A7%A6%E3%82%8C%E3%82%88%E3%81%86%E3%81%AE%E4%BC%9A

ここではWindows上でVirualBoxを入れ、CentOSを入れ、SSHで入るぐらいまでを初学者である筆者(Hamada)が雑にまとめた文章です。なので勉強しながら自分用メモ的に書いてる感もあり、間違いなどあるかと思いますので話半分で見ていただける事希望します。また筆者(Hamada)独自の解釈が入っている事をお断りしておきます。

あくまでもLinuxに触る事がゴールという意識です。このCentOSに色々載せて例えばLAMPというWebサーバとして動かすとかになると追加で設定が必要になるかと思いますが、そこは省略しています。

全体的に説明がすごーい雑な事ご容赦ください。

間違いとかなおしてくれると嬉しいかも

Virtual Boxって何ぞ?

Virtual Boxは雑に言えば「パソコン上で動くパソコンエミュレータ」です。つまりパソコンを買わなくても、これを使えば新しいパソコンが手に入る感じです(誇張アリ**※**)。ただしOSとかはありませんので、自分で入れないといけません。「Windowsパソコン上でVirtual Boxを使ってCentOSを入れる」ってのはイメージとしてはWindows上で自作パソコンを作って、そこにCentOSというLinuxを入れる感じですねー。この「Windows上の自作パソコン」を仮想マシンと呼ぶです。以下この説明でも仮想マシンと呼びますので置き換えて見ていただけますと助かります。

ちゃんとした説明は以下とか参考にしましょう。

https://ja.wikipedia.org/wiki/VirtualBox 

:所詮ソフトウェアなのでいい気になって何台も作ると重たくなりますので、まぁほどほどにです。

Virtual Boxする前に知っておいて欲しい事

Virtual Boxを操作している時、例えばインターネットで調べたいと思ってブラウザをクリックしようとしても出来ない事があります(ViratulBoxからカーソルが出ない、キーボードが効かない)。この場合は

  • 右側Ctrl で出ます。
  • ↑でどうしてもダメならWindowsでの常套手段。 Ctrl+Alt+Deleteから戻す方法もあります。

勉強会などでハマると聞けなくなりますので、一度確認しておきましょう。

(補足)Guest Additionsを入れるという方法もありますが、初心者の方だと難しいかも。興味があれば「virtualbox additions」あたりでググってみましょう。

Virtual Boxのインストール

Virtual Boxのインストール系は0Deltaさんが書かれた以下がとても参考になります。

https://wiki.infra-workshop.tech/Linux%E3%82%92%E3%81%AF%E3%81%98%E3%82%81%E3%82%8B

以下ぐらいまでの作業が出来ます。

  • CentOS7のディスクイメージを落とす
  • Virtual Boxのインストール
  • 仮想マシン作成
  • インストールディスク入れて起動までが書かれています。

上記のWikiに従って作業すると、起動ハードディスクを選択するダイアログが表示されるので、落としたisoを選択します。すると仮想マシンが起動するかと思います。ここからインストールが始まるのです。 確認してないので間違ってたら指摘くださいすみません...

ハードウェア仮想化に伴うトラブル(参考:希にある話)

VirtualBoxは64bit版のOSを仮想マシン上で動かすために、VT-xというインテルの仮想化支援技術(仮想マシン機能)を使っています(AMDだとAMD-Vでしたっけ?)。今時のパソコンは通常使用する設定にされているので、問題になる事が無いと思うのですが、希にこの機能がBIOSで禁止されているケースがあります。BIOSというのはざっくり言うと初期設定とOSの起動を司るソフトでここで禁止されてしまうとそれが無いものとされてしまいます。結果、64bitOSが起動しない事があり得ます。通常は64bit版を入れると思いますのでこの場合BIOS設定が必要になり、一気にハードルが上がります。筆者(Hamada)個人的にはこの場合、BIOSあまりいじらないという方は勉強会に関してはサーバをお借りしてしまう事をお勧めだったりします。

確認方法として、無知なりにやってみた感じではVirtualBoxを起動、「新規」で仮想マシンを作成しようとして「仮想マシンの作成」画面でバージョンを指定する際に64bitが指定出来ないパソコンは該当していると思います。 (申し訳ありません、ここ識者の方のご意見いただけると嬉しいです)

対策される場合、BIOSの設定は機種毎で違いますが、CPU設定系のVT-x(Vitrual Machine)系を確認してDisable(禁止)ならEnable(許可)にする操作が必要になるかと思います。BIOS設定なので(他もそうなのですが)自己責任でお願いいたします。

CentOSのインストール

↓にこんな凄い資料があります。インフラ勉強会すごーい!

https://crowi-infra-workshop.s3.amazonaws.com/docs/CentOS7.pdf 

WindowsのVirtualBoxでCentOSをインストール場合、この資料のp13の29ぐらいからのTeraTermの操作が異なる場合があります。上手くいかなかった場合、TeraTermを使う前に仮想マシンのネットワーク設定が必要かもです。

それでは以下のWikiに移動しましょう。で、SSH接続系で問題があったら戻ってくる感じです(ここで解決できる保証があるとは言ってないw)

Linuxに触れようの会

ダメだった場合は

  • 一度仮想マシンを終了する
  • VirtualBoxのネットワーク設定修正
  • TeraTermを操作して、SSH接続

という操作が必要です。長くて大変申し訳ないのですが、以下の説明を参考にその操作するとかdicordでエロい人に質問するとかになりますです。

SSHを使ってLinuxを操作

こっからSSHに関して少し。SSH系でトラブった方、もしかしたら参考になるかもしれません。

SSHというのは凄い雑に言うとコンピュータを外側から操作する仕組みです。操作する側(「Linux触れよう」でVirtualBox使う場合はWindows)を 「SSHクライアント」 、操作される側(「Linux触れよう」例だとCentOS7)を 「SSHサーバ」 と呼びます

補足:通信を暗号化してますので盗聴の危険性は生でダラダラやり取りするよりは上がる仕組みです。

以下はSSHの真面目な説明

https://ja.wikipedia.org/wiki/Secure_Shell  https://qiita.com/tag1216/items/5d06bad7468f731f590e 

これもざっくりですがSSHを使うとネットワークを使ってSSHサーバ(この場合CentOS7)に接続して操作できます。仮想マシンとWindowsもネットワーク接続(内部で擬似的に)されていますので、これを使う事が出来るという理屈です。

例えばWindowsの例ですとTeraTermというSSHクライアントの機能を持つソフトウェアがありますので、これを使う事でWindows側からSSHサーバ(この場合CentOS7)を操作出来ます。同じマシン同士でやる事に違和感があるかもしれませんが、例えばクラウド上のサーバとか、会社のサーバとかも基本的にはこの方法で操作が出来ますので、この機会に試してみましょうという事なんだと思います。

SSHの利用意図は著者(hamada)の想像です(すみませんアジェンダ説明の辺り不在だったので・・)

次にログイン。

CentOSなどのLinuxを操作する際にはログインが必要です。以下の情報を使ってLinuxにログインします。

  • ユーザ名(テキスト)
  • パスワード(テキスト)もしくは 鍵情報(ファイル)

SSHを使うとネットワーク越しにログインする事が出来ます。

鍵情報を使う場合、公開鍵暗号と呼ばれる方法での暗号を利用します。詳細は省きますが、これを行うには公開鍵と秘密鍵という2つの鍵が必要です。で、実体は何かというと、それぞれファイルとお考えください。

ログインする際は、自分でOSをインストールする際はそこで設定したものを、勉強会などでサーバをお借りする際は講師の方がデータを配布するか・設定を教えてくれるかしてくれると思いますので、それを使います。TeraTermを使って入る方法を後述します。

ログインが無事に終わりますと操作できます。で、「操作」ってのは具体的にはコマンドを打って指示する作業です。例えばファイル名の一覧はlsコマンドというコマンドを使って取得出来ます。 以下はその例です。

$ ls <enter>
hoge.dpf  test.txt  # <- このようにファイル一覧が出ます。

割と重要

SSHとLinuxの関係を雑ですが整理しときます。

SSHを使って別のコンピュータ(CentOSとか)を操作と書きましたが、例えばlsコマンドはSSHのコマンドではなくLinuxのコマンドです。度々の雑説明で申し訳ありませんが、SSHは入出力だけを担当しているような感じです。lsコマンドの例でいうと

SSHクライアント(TeraTerm) 「”ls<enter>”って入力されたよ」 SSHサーバ(CentOS) 「じゃあ"hoge.dpf test.txt”って表示して」

という通信してます(雑だひでー)。なので「lsが来たらどうするか」はSSHサーバ側のOS(CentOS)が決めます。ちなみに仮想マシンの中でターミナルを出して行うコマンド入力も同じように処理しています。この場合はキーボードから入力して画面(ターミナル)に出力というように入出力の手段が変わる感じです。

VirtualBox内のLinuxにSSH接続する(NAT)

勉強会などでサーバをお借りする場合と、自分でVirtualBox立ち上げた場合とではSSHへの入り方が少し異なる場合があります。ここではVirtualBox特有の操作を少し書きます。筆者のバージョンは5.2.4なので、そこら辺でお願いします(適当だなー)。

VirtualBox(ver 5.2.4)で普通に仮想マシン作ると、NATと呼ばれるネットワーク機構が仮想マシンとWindowwsとの間に構築されます。凄いおおざっぱにいうとNATってコンバータです。Windowsマシンに来たネットワークデータを仮想マシンでも受信して、自分向けのデータに変換して仮想マシンに送る機構です(仮想マシンから送信されるデータも同じように変換してWindowsのネットワークから送信されます)。

NAT自体の真面目な説明は以下に。 https://ja.wikipedia.org/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E5%A4%89%E6%8F%9B 

詳細省きますがこの機構があるので、普通にSSHしようと思っても出来ない場合があります。具体的には「ポート22でSSHに入れない」という物です。

以下は補足なのでまぁ興味があれば・・説明に自信がないので読み飛ばしてもらって構いません。

  • ネットワークで何かを制御する場合は、そのコンピュータ毎に割り振られたIPアドレス(住所みたいなもの)と、どの機能を使うかのポート番号を送り元は指定してデータを送ります(これはSSHクライアント-TeraTermとか-の仕事です)。SSHの場合、通常はポート22番を使います。

  • NATの場合、Windows上の仮想マシンに接続する場合は127.0.0.1という特殊なIPアドレスを利用します(つかこれが楽です)。

  • 127.0.0.1はローカルホストと呼ばれていて、意味は自分自身。要は「宛て先はオレ」です。

  • Windows上の仮想マシンにデータを送る場合にはこの127.0.0.1にデータを送ると楽です。

  • すると、Windows上のネットワーク機構と仮想マシン上のNAT機構とが同時に受信します。ここら難しいですねごめんなさい。エロい人の補足を求めたいところです(泣)

  • なので仮想マシン側は本来のWindows上のネットワーク機構を邪魔しないため、「外から新しく来た制御とか要求」に関しては無視するようなイメージで動いているのです。慎ましやかです仮想NAT様。

  • ただそうなるとWindowsから出すSSHの制御も無視されてしまいます。このヒッキーめ(うぐぅ)。

  • 仕方ないので仮想マシンのNATに対して「あのね、ポート番号xxxxを新しく受信したら、番号yyyyに変換して処理してね」とお願いする必要があるのです。するとWindowsと仮想マシンとで会話できます(イメージですよ)

  • TCPでの制御を前提にしていますし、ここの説明炎上必須なぐらい雑です話半分で(識者の方々向への言い訳)。

閑話休題。

なので、NATの場合はポートに関する設定が必要になります。以下そのやり方です。仮想マシンの作成はVirtualBox(ver 5.2.4)のデフォルトのままでやった事が前提です。

  • VirtualBoxを立ち上げます。
  • 該当する仮想マシンを選択して、上にある設定をクリックします
  • 設定画面でネットワークを選択します。アダプター1が出てる筈です。出てないなら「アダプター1」をクリック。
  • 割り当てが「NAT」になっている筈です。
  • 「高度」とある左側の薄青い小さな三角系をクリックします。
  • 「ポートフォワーディング」とある所をクリックします
  • ポートフォワーディング ルールという画面が出ます。
  • 小さいですが右上に緑色の「+」みたいなのがあるのでクリック。項目が追加されます。
  • 名前の所(Rule1とか)をダブルクリックしてsshに変えます(名前なんでどうでもいいのですが見た目大切)
  • プロトコルはTCP(デフォはこれのはず)
  • ホストIPは空欄のまま
  • ホストポート(デフォだと0のはず)をダブルクリックして、2222を入力します。
  • ゲストポート(デフォだと0のはず)をダブルクリックして、22を入力します
  • OKでポートフォワーディング ルール画面を閉じます。
  • OKで設定画面を閉じます。

以下も補足です・・説明に自信がないので読み飛ばしてもらって構いません。

  • これで 127.0.0.1(ローカルつまりオレ)の2222ポートにデータを送るとVirtualBoxのNATを経由して仮想マシン(CentOS)側でポート番号22番のデータを受け取って処理出来るようになるのです。

■余談その1、WLANと有線とか複数手段があるWindowsの場合上記の高度な設定で好きなアダプタ選ぶとそっちに行く(はずです・・) ■余談その2、NATではなくブリッジという方法もあります。ただしNATよりもセキュリティ的に少し落ちます。が、こちらの方が色々便利だと筆者は思ってます。

TeraTermでSSHする方法

入手方法はいくつかありますが、窓の社を紹介します。他のソフト同様、基本的には言われるがままに進めば良いと思うな。以降の説明は日本語版を使う想定です。

https://forest.watch.impress.co.jp/library/software/utf8teraterm/ 

ユーザーとパスワードでログインする。

TeraTermを起動します。

  • 「新しい接続」という画面が出ると思います。出ない場合は「ファイル」→「新しい接続」で出ます。
  • TCP/IPの左側をマウスで左クリックする(黒丸になるはず。既に黒ければ不要)
  • ホストの所にアドレスを入れる(192.168.0.10とかあるいは vm1.hoge.techとか、VitualBoxで上記の設定した場合は127.0.0.1)。アドレスは自分で設定したものか、講師の方が指定したものを使いましょう。
  • TCPポート番号欄に適切なポート番号を入れます。**上記でVirtualBoxのポートフォワーディング設定したなら2222、**特に指定が無い場合は22(デフォはこれなはず)、勉強会などでサーバをお借りした際は講師の方からポート番号の指定があるかと思いますのでそれで。
  • サービスはSSHを選択(SSHの左側をマウスで左クリック)
  • OKをクリック。パスワード使うか公開鍵暗号使うかで操作が少し変わります。

パスワードで入る場合

  • 「プレインパスワードを使う」みたいに書かれた左側をマウスで左クリックする(黒丸になるはず。既に黒ければ不要)
  • ユーザ名には自分で作った物かroot、指定されたユーザ名を入力します。
  • パスフレーズにパスワードを入れます。
  • 「OK」でログインします。

** 公開鍵暗号を使って入る場合**

  • 「RSA/DSA/ECDSA/ED25519鍵を使う」みたいに書かれた左側をマウスで左クリックする(黒丸になるはず。既に黒ければ不要)
  • ユーザ名には自分で作った物かroot、指定されたユーザ名を入力します。
  • パスフレーズにパスワードを入れます(不要な場合もあります。勉強会のSSHサーバに入る場合は指示に従いましょう)
  • 「秘密鍵」をマウスで左クリック。ファイル選択画面が出るので秘密鍵の方の鍵ファイルを探して選択します。
  • 「OK」でログインします。

注意

上記作業で「セキュリティ警告」が出る場合があります。自分でインストールしたOSとか、勉強会の仮サーバの場合は下型の「続行」クリックで続けてしまってください。それ以外の場合、例えばクラウド系とか会社のサーバを使う場合などは、その接続先の説明に従ってください。

詳細は以下など。

https://qiita.com/satote2/items/15dfd522e32e7bfbb92c 

接続できましたら。Linuxで遊び倒します。ここまで来るのが意外と大変だったりします。

長々失礼しました。

不明点とかはdicordで聞くと、皆さまが答えてくださるのでは・・と期待します。 #ごめんなさいごめんなさいごめんなさい。

あと間違い一杯あると思うので修正してもらえると凄く助かります・・私が。 あまりにも酷いようならここごとバッサリでもいいかもです。