Public key authentication

ユーザーのログインを公開鍵認証方式で行えるようにします。
公開鍵認証方式でログインをする利点は、ログインの度にパスワードを入力しなくて済む点です。

つまりは、パスワードを覚えておく必要はありません。

パスワードは長くて複雑なほうが良いと言われますが、現実問題としてある程度簡単なパスワードを設定しがちになってしまうと思います。また、webサービスなどでもパスワードの設定を求められることが多く、似たり寄ったりのパスワードを作ってしまいがちになっているかもしれません。

公開鍵認証方式の「鍵」とは、具体的には2つのファイルになります。

この鍵(つまりファイル)の所持者なら鍵を使ってログインができるようになります。

公開鍵認証方式には、2つの鍵があり、「秘密鍵」「公開鍵」と呼ばれています。
「秘密鍵」は自分以外の人に秘密で絶対に流出してはいけない鍵です。
「公開鍵」は公開された場所に置くための鍵です。

例えるなら、「公開鍵」はドアのノブや金庫など誰の目にも見える場所に置かれている「錠前」です。
そして、「秘密鍵」は、それを開けることを許された人だけが持っている「鍵」になります。

錠前を開けることができるのは、その錠前に対応した鍵だけです。
同じように、公開鍵に対応した秘密鍵でないとログインが許されないようになります。

手元のコンピュータで鍵のペアを作成する場合

秘密鍵はできるだけ安全に管理する必要があります。

そこで、鍵の生成を自分自身のコンピュータで行い、ネットワーク上を通さないのが安全な方法の1つになります。

macやlinuxの場合は、ターミナルより操作することで鍵を作成することができます。

主な流れは、下記の「サーバ上で鍵のペアを作成する場合」と同じです。

異なる部分として、秘密鍵(id_rsa)は手元に残しておき、公開鍵のほうをログイン先のサーバに移動させることです。

サーバ上に移動させた公開鍵(id_rsa.pub)について、下記のようにして登録します。

$ cd /home/shinohara/.ssh ← 「.ssh」に移動
$ cat id_rsa.pub >> authorized_keys ← 登録
$ chmod 644 ./authorized_keys ← 644 でないと有効にならない
$ rm id_rsa.pub ← 公開鍵はもう不要なので削除

サーバ上で鍵のペアを作成する場合

設定したいユーザーに切り替える

ここでは例として、 ユーザー shinohara に公開鍵を設定してみます。

現時点で、shinohara でログインをしている場合は、そのままで構いません。

su をしていたり、他のユーザーでログインをしている場合は、su で切り替えを行います。

$ su shinohara

suの後ろに、切り替えたいユーザー名を指定することで、そのユーザーに切り替えられます。

公開鍵と秘密鍵を作成

$ ssh-keygen -N "" -t rsa

※ 何度か入力を促されますが、そのまま [enter] キーで進めます。
※ この例では、パスフレーズをセットしないで作成します。

鍵が作成されると、/home/ の該当のユーザーの下に、 「.ssh」 フォルダが作られ、その中に鍵が保存されます。

公開鍵を有効化する

$ cd /home/shinohara/.ssh ← 「.ssh」に移動
$ ls -la ← ディレクトリ内一覧を表示して確認
$ cat id_rsa.pub >> authorized_keys ← 登録
$ chmod 644 ./authorized_keys ← 644 でないと有効にならない
$ rm id_rsa.pub ← 公開鍵はもう不要なので削除

秘密鍵を取得する

/home/shinohara/.ssh/id_rsa

id_rsaが、秘密鍵になります。
手元に移動する方法ですが、物理的にサーバに触れる場合はUSBメモリーなどを利用してコピーすると良いです。

VPSのように遠隔地にある場合は、FilezillaなどSFTPに対応したソフトウェアでアクセスし、ダウンロードする方法が簡単です。

手元に秘密鍵を持ってくることができたら、サーバ上の秘密鍵は削除しておきましょう。

$ rm /home/shinohara/.ssh/id_rsa