公開鍵認証とは
ざっくりいうと、秘密鍵ファイルの入っているパソコンからじゃないと、サーバにアクセスできない仕組みです。
以下のイメージのように秘密鍵は「鍵」で、公開鍵は「錠」って考えるとわかりやすいです。
パスワード認証だと、パスワードさえわかれば、第三者からアクセスされる可能性がありますが、公開鍵認証だと秘密鍵ファイルを持っている端末からしかアクセスできないので、セキュリティは向上します。一方で、秘密鍵の管理の手間はかかります。
出典:技術評論社
公開鍵と認証鍵の作成例
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
を指定すると接続できます。
以上
*1:既にあれば不要