公開鍵認証

[更新: 2022年5月19日]

「公開鍵認証」に関する情報です。

概要

公開鍵認証方式は、公開鍵とペアで生成された秘密鍵を持っている人(機器)からのみ、その公開鍵を持つ機器へのログインを許可する認証方式です。辞書攻撃などによる不正ログインの脆弱性を持つパスワード認証方式と異なり、秘密鍵が盗まれた場合を除き認証を突破されるリスクが大きく低減されます。

公開鍵認証の概要図

「さくらのクラウド」では、以下の方法でサーバに公開鍵を登録することができます。

  1. コントロールパネルに公開鍵を登録する
  2. サーバ作成/ディスク修正時に直接入力する

本ページでは、公開鍵認証方式の導入時に必要となる鍵の生成、SSHデーモンへの公開鍵認証を使用するための設定、上記2種類の方法による公開鍵登録方法について解説します。

鍵の作成手順

公開鍵認証では秘密鍵と公開鍵のペアで認証を行います。SSH接続するクライアントには秘密鍵を置き、接続対象のサーバに公開鍵を登録することで、公開鍵認証によるSSHログインが可能になります。

公開鍵認証の接続元となるクライアント(秘密鍵を持つ端末)側で、自身に保存される秘密鍵と、そのペアで生成された接続先サーバに保存する公開鍵を作成する手順についてご説明します。

以下コマンドを入力し、鍵を生成します。

# ssh-keygen -t rsa

鍵ファイルの保存場所の入力要求がありますので、保存先のパスを入力します。デフォルトで問題がなければEnterキーを押下し先へ進みます。本記事では鍵ファイルの保存先を「/root/.ssh/」としてご説明します。

Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):

パスフレーズの入力を求められますので、パスフレーズを2回入力し、都度Enterキーを押下して先へ進みます。

Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:

※パスフレーズを設定しない場合、秘密鍵が盗難されてしまった場合に簡単に不正使用されてしまうリスクがあります。パスフレーズを使用すると秘密鍵の使用時にパスフレーズが求められ、そのパスフレーズに合致しないと秘密鍵が使用できないため、より安全性が向上します。

以下のように出力されれば、鍵ファイルの生成は完了です。

Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
<後略>

/root/.ssh/id_rsa.pubの内容が公開鍵になります。この内容をコピーしておきます。 ※テキストファイル等でPC上に残らないようご注意願います。

# cat .ssh/id_rsa.pub
ssh-rsa
<後略>

鍵の登録手順

さくらのクラウドでは、新たにサーバを作成したりディスク内のOSの設定情報を変更する際、 ディスク修正機能 により管理ユーザのログイン時に使用する公開鍵をOS内に登録できる機能があります。公開鍵はコントロールパネルで一元的に登録・管理し、これらをサーバ作成時やディスク修正時に選択することができます。

注意

ディスク内のOSや設定状況により、ディスク修正機能が使用できない場合があります。

コントロールパネル上での公開鍵の登録

さくらのクラウド ホーム画面の左側メニューより「公開鍵」を選択し、「公開鍵の作成」をクリックします。

公開鍵の作成をクリックする

「名前」欄(必須項目)に登録したい公開鍵の名前を入力し、作成したid_rsa.pubの内容を「公開鍵」のテキストボックスに入力し、上部にある「作成」ボタンをクリックします。

作成ボタンをクリックする

登録済み公開鍵の一覧画面に登録された鍵が表示されます。

登録済み公開鍵の一覧画面

コントロールパネル上での公開鍵の生成

公開鍵登録画面の「公開鍵の登録方法」のラジオボタンで「生成」を選択すると、コントロールパネル上で公開鍵を生成することができます。

生成を選択する

「作成」ボタンをクリックすると秘密鍵のダウンロード画面が表示され、現在コントロールパネルを操作中の端末にダウンロードすることができます。

注意

セキュリティ上、秘密鍵のダウンロードは一度しか行えませんのでご注意ください。

秘密鍵のダウンロードは一度だけ可能

作成が完了すると、一覧画面に作成した公開鍵が追加されます。

サーバ作成時に公開鍵を指定する

サーバ追加画面の公開鍵の項目で「クラウドアカウントから選択」ラジオボタンをクリックすると登録済みの鍵が表示されます。ここで左側のチェックボックスをクリックすることで、あらかじめ選択した公開鍵が登録された状態でサーバを作成することができます。

クラウドアカウントから選択のラジオボタンをクリックする

また、リストの下部に表示される「パスワード/チャレンジレスポンスでのSSHログインを許可しない」のチェックボックスを有効化することで、SSHログインを公開鍵認証のみに限定することができます。

注意

このチェックボックスを有効にしてサーバを作成した場合、SSH経由でのパスワード認証による接続は一切行えなくなりますのでご注意ください。

サーバ作成時に公開鍵を入力する

クラウドのコントロールパネルに公開鍵を登録していない場合でも、「入力」ラジオボタンを選択することでテキストボックスに直接公開鍵を入力することができます。

入力ラジオボタンを選択する

ディスク修正機能を利用して公開鍵を登録する

サーバ作成時以外でも、 ディスク修正機能 を利用して公開鍵を登録することができます。ディスクの詳細画面にて「ディスクの修正」をクリックします。

ディスクの修正をクリックする

サーバ追加画面と同様に、登録済みの公開鍵を選択して登録する場合と、公開鍵を直接入力方法のいずれかを選択することができます。

こちらは登録済みの公開鍵を選択して登録する場合の表示例です。

登録済みの公開鍵を選択して登録する場合の表示例

こちらは公開鍵を入力して登録する場合の表示例です。

公開鍵を入力して登録する場合の表示例

公開鍵認証によるSSHログイン

先ほど秘密鍵/公開鍵のペアを作成したクライアントから、作成したサーバへSSHログインします。

$ ssh root@10.0.0.12

初回SSHログイン時、接続先サーバに設定された公開鍵のフィンガープリントが表示されるので、問題がなければ”yes”を入力します。

The authenticity of host '10.0.0.12 (10.0.0.12)' can't be established.
RSA key fingerprint is [フィンガープリント]
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.0.0.12' (RSA) to the list of known hosts.

以下のように出力されれば、公開鍵認証によるSSHログインは成功です。

Now try logging into the machine, with "ssh 'root@10.0.0.12'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.
 [root@localhost ~]#