sshサーバーのインストール

2020年2月5日

概要

前回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をインストールしてみます。