TOP » Debian のインストール » OpenSSH で SSH サーバー構築 » RSA 公開鍵暗号方式を用いた認証

RSA 公開鍵暗号方式を用いた認証

公開鍵暗号方式とは公開鍵と秘密鍵という2つの鍵を利用してデータの暗号化、復号化を行う暗号方式のことをいいます。
公開鍵暗号方式は暗号化するための公開鍵と復号化するための秘密鍵のペアを作成します。
公開鍵は暗号化させる相手に公開してもかまいませんが、秘密鍵は厳重に管理する必要があります。

公開鍵、秘密鍵ペアの作成

OpenSSH 使って Linux サーバに接続するユーザの公開鍵と秘密鍵のペアを作成します。
鍵ペアの作成は ssh-keygen をを使います。
ここでは SSH プロトコル Version 2 で利用する RSA 暗号を利用した鍵セットを作成します。
公開鍵と秘密鍵のペアの作成はリモートログインするユーザ権限で実行します。

# su - koko
$ /usr/local/openssh/bin/ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/koko/.ssh/id_rsa): 何も入力せずに Enter キーを押す
Created directory ‘/home/koko/.ssh’.
Enter passphrase (empty for no passphrase): **********パスフレーズを入力
Enter same passphrase again: **********再度パスフレーズを入力
Your identification has been saved in /home/koko/.ssh/id_rsa.
Your public key has been saved in /home/koko/.ssh/id_rsa.pub.
The key fingerprint is:
11:db:77:87:af:5e:c1:c3:ed:c9:be:87:3c:47:7d:d0 koko@server.debianj.com

作成した鍵ペアのうち公開鍵 (~/.ssh/id_rsa.pub) を authorized_keys に登録します。
この作業もリモートログインするユーザで行います。

$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 600 ~/.ssh/authorized_keys
$ exit

PSCP を使った秘密鍵の転送

PSCP は DOS プロンプト上のコマンドライン操作でファイルを転送するツールです。
このツールを利用して秘密鍵 (~/.ssh/id_rsa) を Windows クライアントに転送します。
PuTTY Download Page から pscp.exe をダウンロードします。
ダウンロードした pscp.exe は C:\ に保存して、コマンドプロンプトを起動して以下のように入力します。

>cd c:\
>pscp.exe koko@192.168.0.2:.ssh/id_rsa id_rsa
koko@192.168.0.2’s password: **********koko ユーザーのログインパスワードを入力
id_rsa                    |          0kB |   0.9 kB/s | ETA: 00:00:00 | 100%

Windows クライアントの C:\ に id_rsa が転送されます。

PuTTYgen を使った秘密鍵の作成

Windows クライアントに転送された秘密鍵をPuTTY が読み込むことができる形式に変換するために PuTTYgen を利用します。
PuTTY Download Page から入手することができます。
ダウンロードした puttygen.exe を起動して Load ボタンを押しすと [ ファイルを開くダイアログ ] が開くのでファイルの種類を [ All Files (*.*) ] に変更して Linux サーバから転送した秘密鍵 id_rsa を読み込みます。

秘密鍵の読み込み

サーバー側で秘密鍵を作成したときに入力したパスフレーズを入力します。

パスフレーズの入力

以下のように表示されると [ OK ] ボタンをクリックします。

PuTTYgen

[ Save private key ] ボタンをクリックして秘密鍵を保存します。
ここでは id_rsa.ppk として保存します。

PuTTYgen

OpenSSH の設定

OpenSSH の設定ファイル sshd_config ファイルを編集して以下の行を追加します。

# vi /usr/local/openssh/etc/sshd_config
/usr/local/openssh/etc/sshd_config ファイル
36 行目辺り
#LoginGraceTime 2m
PermitRootLogin noroot のログインを禁止
#StrictModes yes
#MaxAuthTries 6
56 行目辺り
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication noパスワード認証を禁止
#PermitEmptyPasswords no
以下省略

OpenSSH の再起動

OpenSSH の設定ファイルを変更した後は OpenSSH を再起動する必要があります。

# kill -HUP `cat /var/run/sshd.pid`

秘密鍵を使って SSH サーバーに接続

カテゴリを [ Connection ] → [ SSH ] → [ Auth ] に移動し [ Browse ] ボタンを押し PuTTYgen で作成した秘密鍵 id_rsa.ppk を指定して [ Open ] ボタンを押します。

PuTTYgen

ターミナルが起動するとユーザー名とパスフレーズを入力してログインすることができます。