NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

SSH 公開鍵認証接続について

公開鍵認証とは

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

f:id:FriendsNow:20210227121722p:plain
出典:技術評論社

公開鍵と認証鍵の作成例

Windows 10 で公開鍵と秘密鍵を作成できます。

Users 配下に ssh 用のフォルダを作成*1

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 です。

username@hostname:~> cd ~/
username@hostname:~> mkdir .ssh
username@hostname:~> cd .ssh/
username@hostname:~> touch authorized_keys
username@hostname:~> vi authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4vwTw3DM2/<...snip...>

PC 端末(Windows10)からの接続例

Teraterm を使用した例です。Private Key File に作成した秘密鍵ファイル labkey を指定すると接続できます。
f:id:FriendsNow:20210227135803p:plain

以上

*1:既にあれば不要