Linuxでの認証方式としては「ユーザー名/パスワード」が基本となっています。
サーバーが増えてくると、パスワードの管理が困難となってきますので開発環境では「全部同じユーザー名/パスワードにする」か「鍵認証」のどちらかで運用していくことになります。
鍵認証については、「鍵が流出したらどうするのか?」という意見が強い時期もありましたがそれはパスワード認証でも同じです。
AWSのEC2は鍵認証が基本になっているので、クラウド環境から始めた人には鍵認証の方が理解しやすいかもしれません。
鍵ファイルを作成する
鍵ファイルとしては「公開鍵」「秘密鍵」の2種類があります。
秘密鍵は対象サーバーに保存されるファイルとなり、公開鍵は各ユーザーに展開するファイルとなります。
鍵の名称を入力します。
パスフレーズはお好みで。空欄にするとパスフレーズ無しとなります。
AWS環境でもパスフレーズが無いので空欄のままで問題無いと思います。
「server1_key」が「秘密鍵」、「server1_key.pub」が公開鍵となります。
テキストファイルなので、内容を見てみた方が分かりやすいと思います。
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/testuser/.ssh/id_rsa): server1_key
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in server1_key.
Your public key has been saved in server1_key.pub.
$ ls -l
total 8
-rw------- 1 testuser testuser 2602 Mar 21 05:45 server1_key
-rw-r--r-- 1 testuser testuser 570 Mar 21 05:45 server1_key.pub
$
公開鍵を保管する
基本的にはユーザーのホームフォルダにある「.ssh」フォルダに「authorized_keys」という名前で格納します。
「.ssh」フォルダのパーミッションが「700」、「authorized_keys」のパーミッションが「600」になっていることを確認してください。
内容が合っていてもエラーとなってしまいます。
ファイル作成直後のパーミッションを見ても秘密鍵と公開鍵でパーミッションが異なっています。
秘密鍵を配布する
ファイルをそのまま配布してください。
ログインする際はユーザー名を指定した後、パスワードの代わりにこのファイルを使用します。
この鍵の扱いは厳重に注意してください。
まとめ
鍵認証というと難しいイメージがありますが、ファイルを作成してしまえば悩む部分はほぼありません。
Teratermではこの形式の鍵をサポートしていないので、Tertermで使用したい場合はPuTTYのpageantと連携させる必要があります。
コメント