OpenSSHとは。安全な通信のための公開鍵認証の設定方法を解説。

OpenSSHは、SSHプロトコルによる遠隔地のリモートホストとの暗号化通信を実現するソフトウェアです。

主にUnix系サーバーとの通信で使用します。

本記事では、OpenSSHの仕組みについてご説明した上で、OpenSSHを使って暗号化通信を実現する際に重要な認証方式である「公開鍵認証」の設定方法について詳しく解説します。

「公開鍵認証」を活用することで、より安全なOpenSSH通信を実現してください

UbuntuVPSで利用するなら
ミライサーバー

\ 2週間無料でお試しできます! /
VPSを使ってみる

OpenSSHとは

OpenSSHの仕組み

OpenSSHは、OpenBSDプロジェクトによって開発されている、SSH通信を行うためのソフトウェアです。

オープンソースソフトウェアのため、誰でも無償で利用できます。

多くのUnix/Linux系OSでは、デフォルトでインストールされています。

従来のリモートホストとの通信は、TELNETというプロトコルを利用して行っていました。

しかしTELNETによる通信は暗号化されていない平文で行ってしまうため、通信を傍受されると簡単に情報が盗まれるというリスクがありました。

そのため、今では通信を暗号化して情報漏洩を防ぐSSHによる通信が主流となっています。

OpenSSHは、クライアント側の「sshコマンド」と、サーバー側の「SSHデーモン」を組み合わせて通信を行います

\ 2週間無料でお試しできます! /
VPSを使ってみる

OpenSSHの認証方式

OpenSSHは、認証方式として「パスワード認証」「公開鍵認証」をサポートしています。

「パスワード認証」は、ログイン時に入力するユーザーIDとパスワードで認証します。

シンプルな認証方式ですが、パスワードの漏洩や、総当たり攻撃を受けてしまうと、第三者からログインされてしまう恐れがあります。

「公開鍵認証」では、秘密鍵と公開鍵のセット(キーペア)を生成し、認証を行う方式です。

パスワード認証よりも安全な認証を行えるため、おすすめです。

手順は、3点です。

    1. クライアント側で秘密鍵と公開鍵を生成。公開鍵をサーバーに送付し、登録。
    2. ユーザーは、秘密鍵を使って署名を生成し、サーバー側に署名を送付。
    3. サーバー側で受信した署名を公開鍵で照合。

この手順で問題なく検証できれば認証成功です。

キーペアはクライアント側、サーバー側どちらで生成してもかまいません。

どちらかで生成し、クライアント側に秘密鍵、サーバー側に公開鍵を格納します。

このように、公開鍵認証は秘密鍵の所有者のみ認証できるため、秘密鍵を奪われないかぎり、情報流出のリスクを防ぐことができます

今回は、OpenSSHの「公開鍵認証」の設定方法について詳しく解説します。

OpenSSHサーバーのインストール方法については、以下の記事で詳しく解説しています。

インストールした上で、公開認証鍵の設定を行ってください。

\ 2週間無料でお試しできます! /
VPSを使ってみる

OpenSSHの「公開鍵認証」設定方法

前提条件

今回は、仮想マシン上にUbuntuおよびsshサーバーを構築します。

仮想マシンのスペックは以下のとおりです。

    • CPU:2vCPU
    • Memory:4GB
    • Disk:50GB

Ubuntu、sshサーバーは以下のバージョンを利用しています。

    • Ubuntuのバージョン:Ubuntu 22.04.2 LTS
    • SSHサーバーのバージョン:OpenSSH_8.9p1

また、コマンドの標記については、実際に入力するコマンドを太字、コマンドを実行後に入力を求められる箇所については赤字、補足の内容を青字で記載しています。

OpenSSHの公開鍵認証用の鍵の作成

OpenSSHをインストールした直後は、パスワード認証によってリモート接続が可能です。そのまま使用することも可能ですが、パスワードが知られてしまうと他人でも接続できてしまいます。

そのため、セキュリティを高める意味で、公開鍵認証を設定するのがおすすめです。

キーペア(秘密鍵と公開鍵の作成)

TeraTermを使って、SSH鍵を生成できます。

メニュー「設定」ー「SSH鍵生成」を選択します。

鍵の種類は、ここでは「ED25519」を選択し、「生成」を選択します。

鍵の生成が完了すると、任意でパスフレーズおよびコメントが入力できます。

なお、サーバー側でSSH鍵を生成する場合、暗号化アルゴリズム「rsa」は、Ubuntu 22.04 LTSからデフォルトで無効化されているため、注意してください。

公開鍵、秘密鍵どちらも保存し、公開鍵(id_ed25519.pub)をサーバー側に転送します。

転送した公開鍵は、「authorized_keys」というファイル名に変更しておきます。

また、権限は所有者のみ読み書き可能に変更しておきます。

$ mkdir .ssh

$ cd /home/testuser/.ssh

$ mv id_ed25519.pub authorized_keys

$ chmod 600 authorized_keys

これにより、クライアント側に秘密鍵、サーバー側に公開鍵を配置した状態になりました。

続いて、OpenSSHの設定で、公開鍵認証を有効にします。

\ 2週間無料でお試しできます! /
VPSを使ってみる

公開鍵認証の有効化

SSHの設定ファイルは、「/etc/ssh/ssh_config」と、「/etc/ssh/sshd_config」の2つがあります。

ssh_configは「他のサーバーにsshで接続するとき」の設定ファイルであり、

sshd_configは「他のサーバーからsshで接続されるとき」の設定ファイルです。

今回は「/etc/ssh/sshd_config」の内容を更新します。

更新する際は、万が一不具合が発生しても設定を戻せるようにするため、バックアップをとっておきましょう。

rootユーザーになり、バックアップを取得

$ sudo su

※←プロンプトがシャープに変わる

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

   ※バックアップを取得

sshd_configファイルを編集

# vi /etc/ssh/sshd_config

以下の設定を追加します。

公開鍵認証を有効化(PubkeyAuthentication)

公開鍵認証を使用する場合には、yesにします。

秘密鍵ファイルの設定(HostKey)

認証用の秘密鍵を使用する場合は、Hostkeyにパスを設定します。

パスワード認証の抑止(PasswordAuthentication)

パスワードによる認証を拒否します。

悪意のあるユーザーが外部からパスワードで侵入を試みるのを防ぐことができます。

パスワード認証を拒否する場合は、公開鍵認証による接続ができるようになってから、実施してください。

設定が完了したら、ファイルを保存し、openssh-serverを再起動します。

# systemctl restart ssh

秘密鍵による接続の確認

接続元から、秘密鍵(id_ed25519)を使用して接続できるか確認します。

以下の画像は、先ほどと同じくTeratermを使用して接続する際の画面です。

パスワードは入力せず、秘密鍵を指定して接続します。

キーペア作成時にパスフレーズを設定した場合は、パスフレーズを入力します。

問題なく接続できることを確認したら、SSHサーバーの設定にある「パスワード認証」(PasswordAuthentication)をnoにして変更します。

これで、秘密鍵がないとSSH接続ができないようになります。

秘密鍵は誤って削除・紛失することがないよう、大切に保管しましょう。

\ 2週間無料でお試しできます! /
VPSを使ってみる

まとめ

今回は、OpenSSHの仕組みについてご説明した上で、より安全な認証方式である「公開鍵認証」の設定方法について詳しく解説しました。

SSHは、クラウド上の仮想サーバーやVPS、遠隔地のサーバーに対して接続するのに重要な仕組みです。

「公開鍵認証」を活用することで、より安全なOpenSSH通信を実現してください。

UbuntuをVPSで利用するならミライサーバー

ミライサーバーは、アシストアップ株式会社が提供している、Unix系サーバーに特化したホスティングサービスです。

ミライサーバーのVPSでは、高速処理が可能なSSD全プランに搭載しています。

OSは、UbuntuDebianAlmaLinuxなどの豊富なラインアップから選択することができます。

2週間無料トライアルを実施しておりますので、まずはお気軽にお試しください。

▼ミライサーバーについてはこちら▼Unix系OS専門のホスティングサービス「ミライサーバー」
プランの選択でお困りの場合は、ぜひ一度お問い合わせください。

お問い合わせフォーム

VPSなら「ミライサーバー」

・全プランSSD搭載
・2週間無料

▶ ミライサーバーを無料で試す

関連記事

特集記事

TOP