公開鍵認証を使ったSSH接続とは?初心者向けにわかりやすく解説!

はじめに

サーバーの管理を始めて最初につまずくのが、そう「公開鍵認証を用いたSSH接続」ですね。

SSHによるログイン方法やサーバー側の設定手順を解説しているページは多くありますが、公開鍵認証の原理については難しい説明が多く、初心者にとっては「なぜこれでセキュリティが担保されるのか」がわかりづらいのが現状です。

この記事では、公開鍵認証の仕組みと安全性について、順を追ってわかりやすく説明していきます。

まず用語解説

🖥️ CLIとは?

CLI(Command Line Interface)とは、黒い画面に文字だけで操作するインターフェースのことです。GUI(マウス操作)とは違い、キーボードでコマンドを入力して操作します。

CLIの代表例は「ターミナル」や「コマンドプロンプト」。Linuxサーバーの管理ではCLIが基本となるため、避けて通れない存在です。

🔗 SSHとは?

手元にサーバーがあればキーボードやマウスを物理的に繋いで直接操作できますが、レンタルサーバーなどの場合はインターネット経由でログインする必要があります。そこで使うのがSSHです。

SSH(Secure Shell)とは: CLIを使って遠隔のサーバーに安全に接続するための通信プロトコル(お約束)です。

  • 通信内容が暗号化されている
  • パスワードや鍵による認証が可能
  • ファイル転送(SCP/SFTP)にも対応

つまりSSHを使うことで安全に遠隔のサーバーへ指示を出したり、データのやり取りを行うことができるのです。

🔒 通信の安全性とは?

ちなみにSSHの項目で出てきた「安全性」とは、通信内容が暗号化されているという意味です。

🕵️ なぜ暗号化が必要なのか?

インターネットは常に盗聴される可能性があるという前提で設計されています。たとえば、カフェのWi-Fiや共有ネットワークでは、通信内容が簡単に傍受されることも。

イメージとしては、ポストに入れた葉書がふわふわと宛先まで飛んでいくようなもの。道中すれ違った人がその気になれば文面を読めてしまいます。

だからこそ、「第三者に読まれても意味がわからないように暗号化(意味不明な文字列に)しよう!」というのが現代のインターネットの基本ルールです。

✉️ 暗号化とは?

暗号化とは、情報を「合言葉を知らないと理解できないように書き換える」ことです。

  • 平文:そのまま読める情報(例:「パスワードは1234」)
  • 暗号文:特定のルール(鍵)で変換された意味不明な文字列

暗号化とは平文から暗号文へ、復号化とは暗号文から平文へ戻す作業のことを指します。

🔑 公開鍵認証とは?

さてここまで前知識の解説が少々長くなってしまいましたが、ここからは公開鍵認証を使ったSSHの仕組みについて解説していきます。

公開鍵認証は、SSHで使われる認証方式のひとつです。パスワードの代わりに「鍵ペア(公開鍵と秘密鍵)」を使って本人確認を行います。

鍵ペアの仕組み

  • 公開鍵:誰でも見られる鍵。サーバーに登録しておく。
  • 秘密鍵:自分だけが持つ鍵。他人に渡してはいけない。

語弊を恐れずに簡単に例えると「公開鍵=鍵穴、秘密鍵=鍵」と思っていただいても良いと思います。

「そんな複雑な鍵とか使わなくてもパスワード認証でいいじゃん!」という考えもありますが、パスワードよく言われている通り辞書アタックや総当たりなど、機械(パソコン)を使うことで簡単に突破されてしまう可能性があります。
その点、公開鍵認証は数学的にものすごーーーーーーく計算に時間がかかるようにできているので機械で突破しようとしても現実的な時間では解読できないようになっています。

どのくらいの時間がかかるかというと、現在の一般的なパソコンでは数十年単位でかかると言われているのでこれでは攻撃者から見ると手間とリターンが見合わないとされています。

公開鍵認証によるSSH接続の仕組みと安全性

公開鍵認証とSSHを組み合わせることで、サーバーへの安全なアクセスが可能になります。接続の流れは以下の通りです。

  1. クライアント(自分のPC)が秘密鍵を保持している
  2. サーバーには対応する公開鍵が登録されている
  3. SSH接続時、サーバーが「この公開鍵に対応する秘密鍵を持っているか?」と確認する
  4. クライアントが秘密鍵を用いて応答し、サーバーがそれを検証する
  5. 正しく応答できれば、ログインが成功する

この一連のやり取りは暗号化された通信上で行われるため、鍵情報の認証も安全に行うことができます。結果として、遠隔からでも安心してサーバーに指示を送ることが可能になるのです。

安全性を保つための前提条件

ただし、この仕組みが成立するためには「秘密鍵がインターネット上に流出していないこと」が絶対条件です。

これは、実際の家の鍵に例えると分かりやすいでしょう。仮に誰かに鍵を貸した場合、その間に合鍵を作られてしまっている可能性があります。インターネットの世界では、これが「秘密鍵が第三者に渡ってしまう」ことに相当します。

秘密鍵の取り扱いに関する注意点

以下のような行為は、秘密鍵の漏洩リスクを高めるため厳禁です。

  • SNSやブログなどに秘密鍵を添付する
  • 暗号化されていないメールで秘密鍵を送信する
  • チャットツール上で秘密鍵をやり取りする

特にチャットツールについては、不特定多数が閲覧できる場での共有は論外ですが、個別チャットであっても避けるべきです。なぜなら、運営者が内容を閲覧できる可能性があるほか、ツール自体が攻撃を受けて情報が流出するリスクもあるからです。

安全な共有手段

どうしても秘密鍵を移動・共有しなければならない場合は、以下のような手段を検討してください:

  • 信頼できる暗号化通信経路(例:VPNやSSH転送)を利用する
  • USBメモリなどを用いたオフラインでの物理的な受け渡し

これらの方法を用いることで、鍵情報の漏洩リスクを最小限に抑えることができます。