LinuxVirtualBox

【Windows】VirtualBox上のCentOSにSSH接続する

はじめに

前回、VirtualBox上にLinux環境を構築できたので、ホストOSのWindowsからSSH接続してみたいと思います。

本記事のゴール

SSHの認証方式には2種類あるので両方試します。

  • ホストOS(Windows)からゲストOS(CentOS8)に
    • パスワード認証方式でSSH接続する。
    • 公開鍵認証方式でSSH接続する。

環境

  • Windows 10 64bit
  • VirtualBox 6.1.12
  • Centos 8.2
  • RLogin 2.25.3

事前準備

RLoginのインストール

今回はターミナルソフトとして、RLoginを使用しますがTeratermなど使い慣れているものでOK。

RLoginはこちらからダウンロードできます。

VirtualBoxのポートフォワーディング設定(NATの場合)

Virtualbox内のゲストOSにアクセスする場合、ポートフォワーディングの設定が必要になります。

ホストOSからゲストOSにSSH接続するというのは、ホストOSからホストOS内のゲストOSに接続するということで、ホストOSからすると自分の中のゲストOSに接続するようなもの。

このような接続を実現するのがポートフォワーディングと呼ばれるもので、ホストOSのこのポートにアクセスしたら、仮想マシン内の特定のポートへ接続するといったことができる。

  1. Oracle VM VirtualBoxマネージャーを開く。
  2. 仮想マシン上で右クリックをして、【設定】を開く。
  3. 【ネットワーク】→【高度(D)】→【ポートフォワーディング】をクリックする。
  4. 右上の+ボタンをクリックして、以下を設定する。

f:id:ashitaka1963:20200809153047p:plain

  • 名前
    • 任意の名前(今回はSSH接続用とわかるようにするためにSSHとする)
  •  プロトコル
      • TCP
  • ホストIP
    • (空白)
  • ホストポート
    • 任意の数字(今回は2222)
  • ゲストIP
    • (空白)
  • ホストポート
    • 22(sshのポート番号)

以上の設定を有効にするには、仮想マシンの再起動が必要になる。

パスワード認証方式でSSH接続する

事前準備が完了したので、パスワード認証方式でSSH接続します。

RLogin

  1. RLogin.exeを実行する。
  2. 【新規(N)】をクリックして、以下の内容を入力する。
  3. 【OK】をクリックして、設定した接続情報を選択して、再度【OK】をクリックする。
  4. 無事にログインできたらパスワード認証によるログインは完了!!

f:id:ashitaka1963:20200809152344p:plain

  • エントリー(上)
    • 任意の名前
  • プロトコル
    • ssh
  • ホスト名
    • localhsot
  • TCPポート
    • 2222(ポートフォワーディング設定のホストポートで設定したもの)
  • ログインユーザー
    • ashitaka(身で作成したユーザー名)
  • パスワード
    • 自身で設定したパスワード

コマンドプロンプト

コマンドプロンプトだと以下のコマンドを入力した後に、パスワードを入力することでログインできる。

# ssh ユーザー名@ホスト名 -p ポート番号
ssh ashitaka@localhost -p 2222

公開鍵認証方式でSSH接続する

続いて、よりセキュアな認証方式である公開鍵認証方式でSSH接続してみる。

公開鍵認証方式についてはこちらを参考にさせていただきました。

秘密鍵・公開鍵の作成

今回はホストOS側で鍵を作成し、ゲストOS側に鍵を転送します。

鍵を保存するためのフォルダを任意のパスに作成する。

mkdir .ssh

次のコマンドを実行して、鍵を作成する。

# -t : 署名アルゴリズム
# -f : 作成するキー名
# -C : コメント
ssh-keygen -t ed25519 -f .ssh/id_ed25519_localhost_key -C " "

そうするとパスフレーズが聞かれるので、パスワードを入力します。
パスフレーズを設定しない場合は、Enter連打でOK!

処理が完了すると、指定したフォルダ内に-fで指定したファイル名の秘密鍵と拡張子.pubが付与された公開鍵が作成されます。

ゲストOSに公開鍵を渡す

WinSCPやRLoginの機能を用いて、ホストOSからゲストOSの/home/ashitakaに公開鍵ファイルを転送します。(ashitaka部分は自身が作成したユーザー名に置き換える。)

以下のコマンドを順に実行し、公開鍵の設定を行います。

# ディレクトリ.sshを作成
mkdir .ssh
# ディレクトリ.sshのパーミッションを700変更(オーナーのみ読み込み、書き込み、実行が可能)
chmod 700 .ssh
# 公開鍵を.sshディレクトリのauthorized_keysというファイル名でコピーする。
cat id_ed25519_localhost_key.pub >> .ssh/authorized_keys
# ファイルauthorized_keysのパーミッションを600変更(オーナーのみ読み込み、書き込みのみ可能)
chmod 600 .ssh/authorized_keys
# 転送した鍵ファイルを削除する。
rm -f id_ed25519_localhost_key.pub

RLoginでのSSH認証鍵による接続

RLoginを起動して、新規(N)をクリックする。

入力内容は基本的にパスワード認証方式と同じでパスワードのところだけ空白にする。
そして、画面右下の【SSH認証鍵】をクリックして、先ほど作成した秘密鍵を選択し、【OK】をクリックする。

接続すると設定したパスフレーズを聞かれるので入力して、ログインできれば完了!!

おわりに

本記事のゴールとしていた、パスワード認証方式と公開鍵認証方式によるSSH接続ができました。

ただし、今の設定のままですとパスワード認証と公開鍵認証方式のどちらでも接続できる状態になっておりセキュアな状態とは言えません。

本来ならば鍵認証できるようになったらパスワード認証は無効化するのが常套手段と思いますが、長くなりそうなので今回はここまでにしておきます。

参考サイト