未分類

概要

前回Windows上にVirtualBoxでLinux(Ubuntu LTSデスクトップ版)を構築する方法を掲載しました。

構築後は大体こんな感じの画面になっております。

今回は、このLinux上にsshサーバーとPostgreSQLサーバーを入れてみたいと思います。

デスクトップ版なのにサーバーを入れる?

はい。デスクトップ版でもsshサービスやDBサービスを提供することが出来ます。サーバー版とデスクトップ版の違いはやや古いですが、以下のように書かれています。

The first difference is in the CD contents. The “Server" CD avoids including what Ubuntu considers desktop packages (packages like X, Gnome or KDE), but does include server related packages (Apache2, Bind9 and so on). Using a Desktop CD with a minimal installation and installing, for example, apache2 from the network, one can obtain the exact same result that can be obtained by inserting the Server CD and installing apache2 from the CD-ROM.

The Ubuntu Server Edition installation process is slightly different from the Desktop Edition. Since by default Ubuntu Server doesn’t have a GUI, the process is menu driven, very similar to the Alternate CD installation process.

Before 12.04, Ubuntu server installs a server-optimized kernel by default. Since 12.04, there is no difference in kernel between Ubuntu Desktop and Ubuntu Server since linux-image-server is merged into linux-image-generic.

For Ubuntu LTS releases before 12.04, the Ubuntu Desktop Edition only receives 3 years of support. This was increased to 5 years in Ubuntu LTS 12.04 In contrast, all Ubuntu LTS Server Edition releases are supported for 5 years.

https://help.ubuntu.com/community/ServerFaq#What.27s_the_difference_between_desktop_and_server.3F

以下意訳

  • 「サーバー」CDは、Ubuntuがデスクトップパッケージ(X、Gnome、KDEなどのパッケージ)と見なすものは含めませんが、サーバー関連パッケージ(Apache2、Bind9など)を含んでいますデスクトップCDを使用しても、たとえばネットワークからapache2をインストールすると、サーバーCDを挿入し、CD-ROMからapache2をインストールする場合とまったく同じ結果を得ることができます
  • Ubuntu Server Editionのインストールプロセスは、Desktop Editionとは少し異なります。デフォルトではUbuntu ServerにはGUIがないため、プロセスは簡単なメニュー選択によるインストールプロセスになります。
  • 12.04より前のバージョンでは、Ubuntuサーバーはデフォルトでサーバー最適化カーネルをインストールします。 12.04以降、linux-image-serverはlinux-image-genericにマージされるため、Ubuntu DesktopとUbuntu Serverの間でカーネルに違いはありません。
  • 12.04より前のUbuntu LTSリリースでは、Ubuntu Desktop Editionのサポートは3年間のみです。これは、Ubuntu LTS 12.04で5年に延長されました。対照的に、すべてのUbuntu LTS Server Editionリリースは5年間サポートされます。

ようは最初のインストールプロセスと、初期インストールパッケージが違うだけなのです。それらのパッケージは後から手動で追加して同じ状態にすることが可能です。だから、デスクトップ版でもサーバー版と同じサーバー用のソフトをインストール出来ます。

sshサーバーをインストールする

sshとは

Secure SHellの意味で名付けられたプロトコルの名前です。shellというと、Windowsで言えばコマンドプロンプトの裏で動いているcmd.exeとかが該当し、Linuxでも代表的なものはbashとかになるのですが、sshはそれらのshellとはちょっと違います。経緯はここでは書きませんが、httpなどと同じ「プロトコル」で、ネットワークで使うものだと分かってもらえれば結構です。

httpはWebでのアクセスに使うプロトコルということは現代人なら皆知ってます(?)。ではsshは何に使うプロトコルなのでしょう?答えは、ネットワークで繋がった離れたところにあるコンピュータで、bashなどのshellを使うためのプロトコルです。例えば、自宅/学校/会社からVALUE/CORE/X-SERVERなどのレンタルサーバー、或いはconohaなどのVPS上でコマンドを使いたいときに、このsshを使います。

インストール

デスクトップ版なので、GUIアプリを使ったインストールも可能なのですが、ここではUnix系らしくコマンドでインストールしていきます。実のところ Ubuntuデフォルトの GUIパッケージ管理アプリはあまり使いやすくありません。ではまずはデスクトップ上で右クリックしてメニューを開き、「端末を開く」を選択するか、Ctrl+Alt+Tを押して、端末(ターミナル)を起動してください。

これがターミナルです。起動したら、以下のように打ち込むと、sshサーバーのインストールが始まります。

$ sudo apt install openssh-server

実行するとパスワードを聞かれるので、自分のパスワードを入れてください。


ディスク領域をどれくらい使うなどの情報が出た後、インストールしてもいいか聞かれると思うので、そこで「y」とすれば後は待ってるだけで入るはずです。

サービスの停止・起動・再起動・状態問い合わせ

sshサーバーをインストールしたので、ubuntuにsshプロトコルを使ってアクセスできるようになりました。sshサーバーが提供しているのはsshサービスです。このようなサービスはUbuntuが動いてる間はずっと何もしなくてもサービスを提供し続けています。なので管理者の都合で必要なときに起動したり、停止できるようになっています。Ubuntuでは、こういうサービスを管理するためのコマンドが用意されています。

例えば、ターミナルから、以下のように打ってみてください。

$ sudo service sshd status

これはsshdというサービスのstatus(状態)を問い合わせるためのコマンドです。緑色で、active(running)=アクティブ(実行中)と表示されているので、sshdというサービスが稼働中であることが分かります。およそ見当がついていると思いますが、このsshdがsshサーバーです。先程インストールしたサーバーが既に動作中ということです。大抵のサーバーソフトはインストールするだけですぐに起動するので覚えておいてください。なお、このコマンドは「q」を押すことで終了します。

今回はサービスの状態問い合わせをしましたが、一般的には以下の形式が使えて、

$ sudo service サービス名 指示

「指示」に使えるのは、statusの他に、 start(開始)、stop(停止)、restart(再起動)などがあります。が、名前のとおりなので説明は省略します。詳細はman sshdなどで調べてください。そのまま打ち込んだ場合は英語の説明になると思うので、得意じゃない人はググってchromeなどで翻訳した方がいいかもしれません。

ホストからsshで接続する

ホスト?ってなるかもしれませんが、これはWindowsのことです。VirtualBoxのようなソフトでは、メインになってるOSをホストOSと呼び、その中で仮想的に起動しているOSをゲストOSと呼びます。なので、今回はWindowsがホストOSで、UbuntuがゲストOSとなります。つまりWindowsからUbuntuにsshで接続するということです。

ホストからゲストに接続?

仮想化して2つOSが動いてるにしたって、機械は1台だけです。ネットも何もないのに何をどう接続すると言ってるのでしょうか?
答えは、仮想ネットワークです。ネットワークも仮想化しているので、本物のネットワークと同様に接続して通信出来るのです。

画像のように仮想ルーター(NAT)まであって、簡単なファイヤーウォールまで備わっています。ファイヤーウォールがあるということは、つまりゲストOS側からは自由にネットワークにアクセスできますが、ホストOS側からは弾かれるということです。同じPCの中なのに…

ポートフォワードの設定

ファイヤーウォールがあるなら、その外から繋ぐためには、家庭用ルーター同様穴あけが必要になります。このファイヤーウォールを構築しているのは、VirtualBoxなのでまずはそのポートフォワード設定を行います。起動してる仮想マシンのメニューの[デバイス]から[ネットワーク]>[ネットワーク設定]を選択してください。

出てくる画面で、[高度]を開いて、[ポートフォワーディング]のボタンを押します。

ホストポート/ゲストポートをsshが使うポート22に設定し、ゲストIPを10.0.2.15に設定すればOKです。これで、Windowsにsshで繋ぎに来ると、ポートフォワードされてUbuntuのsshサーバーに繋がるようになります。

WindowsからUbuntuにssh接続

Windows 10ならsshコマンドが標準でついているので、そのまま使えます。他のWindowsの場合はsshクライアントを用意してください。まずはコマンドプロンプトを開いて、、、

>ssh ユーザー名@localhost

としてみます(ユーザー名はUbuntuのユーザー名です)。すると、

>ssh ユーザー名@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:KM795/aQQ75Vk0ZuE0po/wslaCVMYRKHZ/U3CtZvtfA.
Are you sure you want to continue connecting (yes/no)?

まずはこんなことを聞かれます。sshでは、まずホスト間(この「ホスト」は「コンピュータ」くらいの意味で、「ホスト/ゲスト」の「ホスト」ではありません)の認証をして、その後ユーザーの認証をするのですが、初めて通信するホストの場合、このホストを信用していいかどうかを必ず聞かれます。ここでyesを選択すると、次回以降同一ホストでは聞かれません。ここでは、Ubuntuと通信してるので、Ubuntuを信用していいかどうかを聞かれています。「yes」を押して先に進みます。

>ssh ユーザー名@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:KM795/aQQ75Vk0ZuE0po/wslaCVMYRKHZ/U3CtZvtfA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
ユーザー名@localhost's password:

ここで改めてパスワードが聞かれます。Ubuntuインストール時に設定したパスワードでログインしてください。

>ssh ユーザー名@localhost
The authenticity of host 'localhost (127.0.0.1)' can't be established.
ECDSA key fingerprint is SHA256:KM795/aQQ75Vk0ZuE0po/wslaCVMYRKHZ/U3CtZvtfA.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'localhost' (ECDSA) to the list of known hosts.
ユーザー名@localhost's password:
Welcome to Ubuntu 18.04.4 LTS (GNU/Linux 5.3.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage


 * Canonical Livepatch is available for installation.
   - Reduce system reboots and improve kernel security. Activate at:
     https://ubuntu.com/livepatch

0 個のパッケージがアップデート可能です。
0 個のアップデートはセキュリティアップデートです。

Your Hardware Enablement Stack (HWE) is supported until April 2023.

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

ユーザー名@ubuntu1804:~$

ここまで来ればssh接続成功です。あとはWindows上のコマンドプロンプトから、Ubuntuのターミナルで出来ることは全て実施することが出来ます。

さらなるセキュリティと利便性を求める方へ

sshの目玉は公開鍵認証です。丁寧な解説はありませんが、興味があり、内容的に余力のある方は↓もやってみてください。

まとめ

今回はWindows上にVirtualBoxを使って動かしたUbuntuにsshサーバーをインストールしてWindowsから繋いでみました。

次回は、データベース・サーバーである、PostgreSQLをインストールしてみます。

未分類

別にMacユーザーさようならという記事ではありません。メインターゲットがWindowsユーザーなだけです。

Linuxとは

Unixという古式ゆかしい文化の流れを汲むOSの1つです。仲間にFree/Open/Net-BSDとかSolarisとかいます。そうそう、冒頭で触れたMacが使ってるOSもFreeBSDの流れを汲むOSの1つです。商用のUnixもいくつかあり、MacOS/Solarisとかは商用ですね。詳細は https://ja.wikipedia.org/wiki/Linux参照。

Unix系OSの特徴は…ターミナルだけで何でも出来るように設計されていることです(本当の意味ではPOSIX準拠くらいが妥当だと思う)。我々Windowsユーザーには信じられないですね。簡単に言えばコマンドプロンプト1つだけで何でも出来るというわけですから。当然マウスはオプションです。もちろんWindowsも極めると大抵の人はほとんどマウス使わなくなりますけど…。

ターミナルだけで何でも出来るということは、ネットワーク的に離れたところからでも、sshなどで接続すれば手元のPCと同じように何でも出来るということです。つまりネットワーク越しの作業がしやすい=サーバー向けということになります。サーバーは普通ディスプレイも繋がっておらず、データセンターでラックに積まれるようなPCなのです。これにsshなどで繋いでコマンドラインから操作できるのがUnix系OSです。Windows系のサーバでは、通常そういう操作は行われず、リモートデスクトップのGUI画面を使ってサーバを操作します。一見初心者でも楽に操作できますが、サーバ単体のコストが高いのと、負荷が高いときに(自動で)サーバを増やして対応する(スケールアウト)ようなことが出来ないので、サーバーの主流はUnix系になります。

Windowsから使うLinux

WindowsもLinuxも括りはOSです。OSとは基本電源入れてから(ブートローダ除けば)最初に起動するものなので、普通は何かのOSを使っていたら、他のOSは同時に起動しません。アプリとは違うのですよアプリとは。つまりWindowsを使っていたら、普通は同時にLinuxを使えないのです。

しかし、ゲームをするためにWindowsを使っていたいけど、裏でスクレイピングさせてるからLinuxも同時に使いたいなぁとかいうことはあるわけです。昔はこれを実現するためにはPCが2台必要で、1台にWindowsを入れてゲーム、1台にLinuxを入れてスクレイピングといった使い方をしないといけませんでした。そんなゲーマーのために(?)最近は「仮想化」という単語とともに、1台で複数のOSを同時に動かす技術が生まれています。

仮想化の時代

現代はあらゆる仮想化の技術によって、いろいろな恩恵を受けることができます。OSも例外ではなく、CPU仮想化支援とハイパーバイザーの力を借りて、複数のOSを同時に動かすことが出来ます。

Windows上でLinuxを動かす場合、2020年2月2日現在、以下の方式が一般的です。

  1. Hyper-V(ハイパーバイザ)を無効にしてVirtualBox/VMwareなどを使って好きなディストリビューションのLinuxを動かす
  2. Hyper-V(ハイパーバイザ)を無効にしてWSLを使って対応ディストリビューションのLinuxを動かす(WSL1のまま使う)
  3. Hyper-V(ハイパーバイザ)を有効にしてWindowsもLinuxも使う(WSL2はこの方式)

2.は動かないソフトがあったり、安定性が問題になる場合があります。3.は1.の使い方が出来なくなる問題があります(最近のVirtualBoxは機能的にHyper-V有効でも動くようになったらしいが、ハード依存しており安定していない)。そこで今回は1.のケースを選択します。

なお、1~3いずれにしてもCPU仮想化支援を前提としています。今使われてるCPUは大半がこの機能を持っていると思いますが、BIOSの設定次第の場合があるので、BIOSで有効化しておきましょう。

なお、最近巷でよく聞くDockerなどのコンテナ系の仮想化もありますが、これらはOSそのものを仮想化してるわけではないので、ここでは扱いません。OSそのものの機能はホストのものを使い、アプリの実行環境をコンテナという箱で管理する方式に近いです。ようは1.~3.でLinuxをインストールしないと使えないということです。

VirtualBoxのインストール

現在主流のVMソフトはVirtualBox/VMwareの2つですが、ここでは無料で登録せずに使えるVirtualBoxを選択します。

vagrantで良くない?

いいえ。某学習サイトなどで紹介される、vagrantもローカルインストール用に中で使ってるのはVirtualBoxです。なので、VirtualBoxを意識せずにvagrantで簡単インストールすることも可能です。ただ、vagrantは元々いろいろなPCに同じLinux環境をインストールしたい人が楽に出来るよう開発されたツールです。初心者が何が何だか分からないけど使うような、親切設計の便利ツールではありません。悪いことは言わないので、最初はVirtualBoxを直に使って環境に対する理解を深めることをオススメします。そうでないと問題が起きたときの対応が全く取れなくなります。慣れてからvagrantの恩恵に預かってください。便利さに心打たれます。

ダウンロード

Downloads – Oracle VM VirtualBox

ここから最新をダウンロードします。

インストール

ダウンロードしたインストーラをポチポチするだけでOKです(途中ドライバのインストールで署名関連の警告が出るが気にせずOKでいい)。難しいことはありません。

→PC内に仮想PCをもう一台起動することが出来るようになった

Linuxのインストール

VirtualBoxのおかげで、PC内に仮想PCをもう一台起動することが出来るようになりました。しかし、この仮想PCにも設定とOSのインストールという作業が必要になります。普通PCを買うとOSはプリインストールされた状態で納品されますが、元々素のPCにはOSなど入っていないのです。そこで、まずは仮想PCの作成とLinuxのインストールをします。

ディストリビューションの選定

Linuxのインストールをする前にディストリビューションを決めます。Linuxと一口に言っても、実はその種類であるディストリビューションが星の数ほどあるからです。しかし主要なディストリビューションを2つ挙げるとすると、Redhat(CentOS)とUbuntuです。日本で業務用に使う場合はRedhat(CentOS)が多いですが、個人用で使いやすいディストリビューションはUbuntuになります。オススメは個人用に扱いやすいUbuntuでLinuxに慣れるです。Redhatは仕事で必要になったらCentOSで勉強する、くらいでいいと思います。なので、ここでの選択もUbuntuです。

ダウンロード

Ubuntuを入手する | Ubuntu | Ubuntu

デスクトップ版かつサポート期間の長いLTS版をダウンロードします。本当はサーバー版の方が適切なのですが、GUIが全く使えないので、慣れてる人以外はデスクトップの方が扱いやすいです。サーバー版の方がGUIがない分軽くなります。

2020年2月2日現在、最新のLTSは18.04.3です。2020年4月には新しいLTSが出てくる予定ですが、出始めは不具合も多いので、初心者はリリース後2~3ヶ月経つまでは古いLTSで様子を見た方がいいかもしれません。

インストール

説明サイトが他にあるのでそちらに譲ります

VirtualBox6にLinux(Ubuntu18.04LTS)をインストールする方法

必要十分な情報があり、クライアントとして使う分には申し分ない環境が整います。が、1件だけ追加の設定が…GUIの日本語設定が足りません。

[左下のアプリケーションを表示する]の点々を左クリックします。すると、以下のような画面が出るので…

ちょっとスクロールして下の方にある「言語サポート」を押してください。アプリが起動して、以下のダイアログが出ます。

ここで、インストールを選択します。パスワードを聞かれるので入力すると日本語サポートがインストールされます。

閉じれば完了です。

Tips.1. Terminal起動ショートカット

デフォルトショートカット、左Ctrl+Alt+TでTerminalを起動出来ます。結構便利。

Tips.2. Windowsアプリの切り替えをしたい

Alt+TABでアプリの切り替えを出来ますが、これはUbuntu内の切り替えになります。
Windows側の切り替えをキーボードからしたい場合は、右Ctrlキーを一度押してからAlt+TABでWindowsアプリを切り替えられます。

Tips.3. GUIが固まった。コマンドだけでも使えないか?

右Ctrl+F1~F7でUbuntu内の仮想端末を切り替えられます。
GUI画面はそのうち1つなので、仮想PC自体が固まってなければ、別の仮想端末からログインすることでコマンドが使えます。
sshなどでリモートから操作できるようにするのも手です。

Tips.4. ターミナルでのコピー&ペースト

WindowsだとCtrl+CとCtrl+Vでコピペですが、Linux GUIのターミナルだと基本はShift+Ctrl+CとShift+Ctrl+Vでコピペになります。
ようはShiftも押す必要があるということです。ターミナルだけですけどね。

まとめ

Windows上でUbuntuを同時に使えるようになりました。インストールしたUbuntuで動画を見ることも出来ますし、OpenGLも簡単なものならそれなりに動かすことが出来るはずです。サーバーとしての機能、ネットワーク系の設定は今回端折っていますが、次回sshとpostgresをインストールする際に説明予定です。

↓次回