公開鍵認証

[更新: 2018年11月1日]

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

概要

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

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

  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や設定状況により、ディスク修正が行えない場合があります

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

  1. [オプション]をクリック
  2. [公開鍵]をクリック
  3. [追加]をクリック

先述のid_rsa.pubの内容を赤枠内のテキストボックスに貼り付け、[追加]をクリックします。

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

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

  1. [オプション]をクリック
  2. [公開鍵]をクリック
  3. [追加]をクリック

「生成」ラジオボタンをクリックし、パスフレーズと名前を入力し、右下の「生成」ボタンをクリックします。

秘密鍵ダウンロード画面で秘密鍵をダウンロードします。セキュリティ上、秘密鍵のダウンロードは一度しかできないのでご注意ください。

公開鍵一覧にて、生成した公開鍵が追加されていることが確認できます。

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

[サーバ追加]画面にて、公開鍵の項目で[選択]ラジオボタンをクリックすると、登録済みの鍵が表示されますので、左側の四角をクリックします。

また、[パスワード/チャレンジレスポンスでのSSHログインを許可しない]のチェックボックスを入れることで、SSHログインを公開鍵認証のみに限定することができます。

※SSH経由でパスワード認証による接続は一切行えなくなりますのでご注意ください。

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

[サーバ追加]画面にて、公開鍵の項目で[入力]ラジオボタンをクリックすると、公開鍵を入力するテキストボックスが表示されますので、先述のid_rsa.pubの内容を貼り付けます。この場合は、1.で行った[設定]→[公開鍵]画面での公開鍵登録は不要です。

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

「さくらのクラウド」では、サーバ作成時の他に、ディスク修正機能を利用して公開鍵を登録することができます。 ディスクの詳細画面にて[ディスクの修正]をクリックします。

[サーバ追加]画面と同様に、登録済みの公開鍵を選択して登録する方式と、公開鍵を入力して登録する方式の2種類がございます。

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

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

公開鍵認証による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 ~]#