SSH 公開鍵認証とは

はじめに

簡単にいうと、秘密鍵ファイルの入っているパソコンからじゃないと、サーバにアクセスできない仕組みです。秘密鍵は「鍵」で、公開鍵は「錠」と考えるとわかりやすいと思います。
パスワード認証だと、パスワードさえわかれば、第三者からアクセスされる可能性がありますが、公開鍵認証だと秘密鍵ファイルを持っている端末からしかアクセスできないので、セキュリティは向上します。一方で、秘密鍵の管理の手間はかかります。

公開鍵と認証鍵の作成方法

Windows 10 で公開鍵と秘密鍵を作成できます。
手順は次のとおりです。

Users 配下に ssh 用のフォルダを作成(既にある場合はこの手順は不要です)

PS C:\Users\USERNAME> mkdir c:\Users\USERNAME\.ssh

鍵ペア(公開鍵と秘密鍵)を作成

PS C:\Users\USERNAME> cd .\.ssh\
PS C:\Users\USERNAME\.ssh> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\USERNAME/.ssh/id_rsa): labkey
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in labkey.
Your public key has been saved in labkey.pub.
The key fingerprint is:
SHA256:m+jOS6K/bxMbv/b9gL0M7z2Yo7QFBfOSW7KDh2ejetM USERNAME@LAPTOP
The key's randomart image is:

これで、c:\Users\USERNAME\.ssh に秘密鍵(labkey)と公開鍵(labkey.pub)ファイルが作成されます。なお、passphrase(パスフレーズ)は、秘密鍵にアクセスする時のパスワードです。設定は任意です。

サーバー側への公開鍵設定方法

公開鍵のみ、サーバー側に設置する例です。本例では OpenSUSE を使用しています。
以下のように、公開鍵(labkey.pub)を適当なエディタで開いて、文字列をコピーし、authorized_keys に貼り付ければ OK です。

cd ~/
mkdir .ssh
cd .ssh/
touch authorized_keys
vi authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4vwTw3DM2...

クライアント(Windows 10)からの接続例

Teraterm を使用した例です。Private Key File に作成した秘密鍵ファイル(labkey)を指定すると接続できます。

f:id:FriendsNow:20210227135803p:plain

以上