The CentOS Logo Vertical Version With Registered Trademark

こんにちは、じょえずです。

仮想化環境のCentOSマシンを使って、Linux系OSの操作に馴染んでいくシリーズ、
最終回となる今回はSSH接続について紐解いていきます。

これまでの経緯はこちらからご覧ください。

SSHとは

まず「SSH」とは、Secure Shell(セキュアシェル)の略称だそうです。リモートコンピュータと通信するためのプロトコルです。
暗号や認証の技術が使われているので、従来のTelnetPなどのリモート通信よりも安全にやり取りができるというものです。
Linux系のサーバーにリモート接続するにはスタンダードな方式です。

Windowsサーバーなどでリモートからログインして操作するときは、RDP(リモートデスクトッププロトコル)を使うと思います。
具体的にいうとmstsc.exe(リモートデスクトップ)とかですね。それのCUI版であり、だからこそのLinux向け、なんて捉えるとわかりやすいかと思います。

昔だとルーターの設定なんかにWindowsからtelnetを使ってリモート接続をしていましたが、今ではSSHが推奨されていたり、Linux系ではリモートアクセスといえばとてもポピュラーなプロトコルです。

認証方式

主にパスワード認証方式と公開鍵認証方式の二つに大別されます。

パスワード認証方式

サーバー側のユーザーアカウントとパスワードを使ってログインする方式です。もちろん通信は暗号化されていますが、鍵認証としては共通鍵方式だそうです。

ざっくりいうと、サーバー側からクライアント側に公開鍵を渡す、クライアントはその公開鍵を使って共通鍵作りそれで暗号化し、サーバーへ送信。受け取ったサーバーは自分の秘密鍵で復号する、っていう方式ですね。

サーバーサイドの認証そのものは通信されたパスワードで行いますので、公開鍵やパスワードが通信されるということでセキュリティとしては強度が低いとされています。

公開鍵認証方式

サーバー側の公開鍵とクライアント側の秘密鍵と2つの鍵(キーペア)を使用した接続方式です。
あらかじめそれぞれの鍵を双方に配置しておくという手間がかかりますが、これは鍵そのものを通信するというリスクを回避し、認証そのものも鍵の照合で行いますので、パスワードもやり取りしません。

セキュリティ強度は高いのでクラウドでのサーバーとのやり取りには今やこのやり方が標準ですね。

実際にやってみる

それでは実際にやってみましょう。Windows環境からLinux系サーバーにSSH接続するには、標準で使えるソフトはインストールされていませんので別途自分でツールをインストールする必要があります。

最も有名かつポピュラーなものが「TeraTerm」かと思います。ここでは「TeraTerm」を使ってVirtualBox上の仮想化CentOSマシンにSSH接続するということを行ってみます。

「TeraTerm」のインストール

TeraTermのホームページからダウンロードサイトにいって、最新のexeをダウンロードします。それをクリックするとインストーラが起動しますので、普通にデフォルトのまま進めればセットアップできます。

zipをダウンロードしてそれを展開してもいいようです。その際は「ttermpro.exe」が本体のようですね。

仮想化マシンのネットワークインターフェース設定

デフォルトではVirtualBox上の仮想化マシンの起動時はNICが有効になっていませんので、そちらを有効にしておきます。仮想マシンを立ち上げてからコマンドラインにて設定します。
viコマンドで「/etc/sysconfig/network-scripts/ifcfg-enp0s3」を編集します。

cent0025
設定にはroot権限が必要なのでviコマンドの前にsudoをつけます。パスワードを聞かれますのでCentSOインストール時に設定したroot権限のパスワードを入力します。
cent0026
ONBOOTエントリをyesにしておきます。

仮想化マシンのポートフォワーディング設定

ホスト側のWindowsクライアントと仮想化マシン上のゲスト側CentOSの間にはVirtualBoxが介在しています。CentOSに接続するSSHの通信はTCPプロトコルのポート22なのですが、その前にVirtualBoxとの接続が発生します。

VirtualBoxにポート番号22で接続するわけにはいきません。そこでホスト側から届いたポート番号を変換してゲスト側に渡す「ポートフォワーディング」という設定をVirtualBox上に施します。

VirtualBox上の仮想化マシンの(下の図ではCentOS7)を右クリックし設定を選択し

cent0020
ネットワークのアダプタ1の高度な設定を展開します。
cent0021
割り当てが「NAT」であることを確認し、「ポートフォワーディング」をクリックします。
cent0022
ポート番号変換のルールを記入してOKボタンで保存します。
cent0023
名前はなんでもいいです。変換元のホスト側のポート番号は未使用ならば何番でもよいです。ここでは20022を使ってます。はい、これで「ホスト側からきたTCPの20022ポートの通信を22のポートに変換する」というルールが設定されました。

SSH接続

準備が整ったので、「TeraTerm」を起動して仮想化CentOSマシンにSSHでリモート接続してみましょう。

「TeraTerm」を起動すると新しい接続というウインドウが出ますので、

cent0028
TCP/IPを選択し、ホストを「Localhost」、TCPポートには先ほど設定したホスト側のWindowsクライアントとVirtualBoxとの通信のポート「20022」を入力します。
サービスで「SSH」を選んでOKボタンをクリックします。
cent0027
するとSSHとしての認証画面がでますので、仮想マシン上に設定してあるユーザー名とパスワードを入力しOKボタンを押します。
cent0029
はい、「TeraTerm」を通してリモートでVirtualBox上の仮想化マシンにログオンできました。直接仮想マシンのCentOSを操作しているのではなく、ホスト側のWindowsクライアントからリモートで操作している状態です。
実際のマシン上でコマンド投入するのと全く同じにCUIでの操作ができます。試しにシェルとOSのバージョンを確認してみましょう。
cent0030
間違いなくVirtualBox上の仮想化マシンですね。

まとめ

  • Linux系のサーバーにリモート接続するにはSSHを使う
  • 認証にはパスワード認証方式と公開鍵認証方式がある
  • Windows環境では「TeraTerm」を使うと便利
  • 仮想化マシンにホスト側からリモート接続するなら「ポートフォワーディング」設定をする
  • SSHを使えばリモートでログインしCUI操作が可能
こんなところでしょうか。

いかかでしたか、Linux系OSの操作に馴染んでいくシリーズ。ほんとうに操作の基礎の基礎ですが、未知だったLinux系マシンになんとなく向き合えそうでしょうか。
なぜこんなにLinux系OSの操作を紹介したかといいますと、実は今度AWS関係を取り上げようと思っておりまして、その際Linux系の知識を前提にEC2インスタンスなんかの操作を紹介したいなーと思ったからです。

さぁ、Windows系エンジニアだったあなた、Linux系も含めてクラウドに触れていきましょうか。それでは!