SSHの本当のメリットとは?秘密鍵のパス追加・変更・削除方法も解説




はじめに

SSH接続を使っていると、レンタルサーバーやGitで公開鍵認証を設定する機会があります。

ただ、SSHについて調べると「パスワード入力が不要になる」と紹介されることが多く、

「え、便利になるためのものなのに、さらに秘密鍵にもパスワードを付けるの?」

と思ったことがある人もいるかもしれません。

実はここ、かなり誤解しやすいポイントです。

SSHの本当のメリットは「パスワードをなくすこと」ではありません。

今回はSSHの本質的な役割と、秘密鍵に設定するパスフレーズの追加・変更・削除方法をまとめます。

SSHの本当のメリットとは?

「SSH = パスワード入力を省略するもの」と思われがちですが、本質は少し違います。

一般的なパスワード認証の場合は、毎回パスワードを使って認証します。

イメージとしては次のような流れです。

あなた

「パスワードは abc123 です」

サーバー

「正しいのでログインOK」

パスワードが短かったり単純だったりすると、推測されるリスクがあります。

一方、SSH鍵認証では少し仕組みが異なります。

あなた

「秘密鍵を持っています」

サーバー

「本人確認してください」

認証成功

この場合、秘密鍵そのものをサーバーへ送信しているわけではありません。

つまりSSHのメリットは、

「パスワードを送らずに安全に本人確認できること」

になります。

なぜ秘密鍵にパスワードを付けるのか

ここで疑問になるのが、

「秘密鍵を使っているのに、さらにパスワードが必要なの?」

という点です。

これは秘密鍵ファイルが盗まれた時のためです。

例えば秘密鍵にパスフレーズが無い場合、

id_ed25519

このファイルを誰かが入手すると、そのままログインできてしまう可能性があります。

一方、パスフレーズを設定すると、

秘密鍵
+
パスフレーズ

の2つが必要になります。

つまり、

秘密鍵を盗まれる

でも解除パスワードが分からない

利用できない

という状態になります。

秘密鍵自体を守るためのロックのようなイメージです。

パスフレーズを追加する方法

パスフレーズを追加する方法

既に作成済みの秘密鍵にも後からパスフレーズを設定できます。

コマンドはこちらです。

ssh-keygen -p -f ~/.ssh/id_ed25519

パスフレーズが未設定の場合は、以下のように表示されます。

Enter new passphrase (empty for no passphrase):
Enter same passphrase again:

ここで設定したいパスフレーズを入力します。

例えば、

Enter new passphrase:
mypassword

Enter same passphrase again:
mypassword

入力すると以下のように表示されます。

Your identification has been saved with the new passphrase.

パスフレーズを変更する方法

既にパスフレーズが設定されている場合は、同じコマンドを実行します。

ssh-keygen -p -f ~/.ssh/id_ed25519

今度は以下のように表示されます。

Enter old passphrase:
Enter new passphrase:
Enter same passphrase again:

最初に現在のパスフレーズを入力し、その後新しいパスフレーズを設定します。

パスフレーズを変更する方法

変更する場合も同じコマンドを使用します。

ssh-keygen -p -f ~/.ssh/id_ed25519

今のパスフレーズを入力し、新しいパスフレーズを入力します。

Enter old passphrase:
Enter new passphrase:

パスフレーズを削除する方法

削除も同じコマンドです。

ssh-keygen -p -f ~/.ssh/id_ed25519

今のパスフレーズを入力後、新しいパスフレーズを空欄にします。

Enter old passphrase:
mypassword

Enter new passphrase:
(何も入力せずEnter)

これでパスフレーズが削除されます。

ssh-agentは何のためにある?

ここまで読むと、

「毎回パスフレーズ入力するなら面倒では?」

と思うかもしれません。

その時に使うのが ssh-agent です。

ssh-agent を利用すると、最初に1回だけパスフレーズを入力して、以後はメモリ上に保持できます。

例えば朝PCを起動した後、

ssh-add ~/.ssh/id_ed25519

を実行してパスフレーズを入力すると、その後は、

ssh server
git pull
rsync
scp

などで毎回入力する必要がなくなります。

そのため実務では、

・秘密鍵のみ
・秘密鍵 + パスフレーズ + ssh-agent

の組み合わせが多く利用されています。

注意点

パスフレーズを削除すると利便性は上がりますが、秘密鍵を取得された場合にそのまま利用されるリスクがあります。

個人利用なら問題にならないケースもありますが、業務利用や本番サーバーへ接続する場合は、パスフレーズ付き秘密鍵を利用するケースが多くあります。

まとめ

SSHは単純にパスワード入力をなくすための機能ではなく、安全に認証するための仕組みです。

また、秘密鍵にパスフレーズを設定すると、鍵ファイルが漏れてしまった場合のリスクも軽減できます。

さらに ssh-agent を組み合わせれば、セキュリティと利便性のバランスも取りやすくなります。

SSHは何となく使っている人も多いですが、仕組みを知っておくと理解がかなり深まります。

コメント

タイトルとURLをコピーしました