📝

SSHの基本 — 離れた場所から安全にサーバーを操作する仕組み

に公開

リモートサーバーの管理に欠かせない SSH(Secure Shell) について、その基本概念から認証の仕組みまでを分かりやすく解説します。

SSHとは?

SSHはSecure Shellの略称で、離れた場所にあるコンピューターをネットワーク経由で安全に操作するための仕組みです。

通常、インターネットなどの通信経路には、悪意のある第三者が盗聴を試みるリスクがあります。しかし、SSHを利用することで通信内容が暗号化されるため、万が一内容を見られたとしても、第三者はその内容を理解することができません。これにより、安全にリモートログインやコマンド操作を行うことが可能になります。

TelnetとSSHの違いは通信が暗号化されるかされないかの違いです。

SSH接続の基本コマンド

SSHでサーバーに接続する際の基本的なコマンド形式は以下の通りです。

ssh ユーザー名@サーバー名(またはIPアドレス)

例えば、ユーザー名が user1、サーバー名が server の場合は ssh user1@server と入力します。


2つの認証方式:パスワード認証と公開鍵認証

SSHには主に2つの認証方式があります。それぞれの特徴と違いを理解しておくことが重要です。

1. パスワード認証

ユーザー名とパスワードを入力してログインする、最も一般的な方式です。

  • メリット: 設定が簡単で導入しやすい。
  • デメリット:
    • パスワードが推測されるリスク(ブルートフォース攻撃など)がある。
    • 接続のたびに入力する手間がかかる。
    • セキュリティ強度が比較的低い。

2. 公開鍵認証(推奨)

「公開鍵」と「秘密鍵」というペアになる2つの鍵を使用する方式です。

  • メリット:
    • パスワードをネットワーク上に流さないため、セキュリティ強度が非常に高い。
    • 一度設定すれば、パスワード入力なしでスムーズにログインできる。
    • 推測による攻撃に強い。

公開鍵認証の仕組み

公開鍵認証では、以下の2つの鍵の役割を理解する必要があります。

  • 公開鍵: 誰に渡しても良い鍵。接続先のサーバーに事前に登録しておく。
  • 秘密鍵: 自分だけが厳重に管理し、他人に渡してはいけない鍵。

認証のプロセス(チャレンジ・レスポンス)

  1. チャレンジ: サーバーがクライアントに対し、ランダムな値(チャレンジ)を送る。
  2. レスポンス: クライアントは手元の秘密鍵を使ってその値を暗号化し、サーバーに返す。
  3. 検証: サーバーは事前に登録された公開鍵でそのデータを復号する。値が一致すれば、正しい秘密鍵の持ち主であると判断され、認証が成功する。

この仕組みにより、秘密の情報そのものを送ることなく、安全に本人確認が行われます。


公開鍵認証の設定手順

実務でよく使われる公開鍵認証の設定の流れは以下の通りです。

  1. 鍵ペアの作成: クライアント側で ssh-keygen などのコマンドを使い、秘密鍵と公開鍵を作成する。
  2. 公開鍵の登録: 作成した公開鍵(id_rsa.pubなど)の内容を、サーバー側のユーザーのホームディレクトリにある .ssh/authorized_keys ファイルに追記する。
  3. 接続: 秘密鍵を指定してSSH接続を行う。

まとめ

SSHは、現代のサーバー運用において必須の技術です。

  • 通信は常に暗号化され、安全性が保たれる。
  • 基本コマンドは ssh ユーザー@ホスト
  • セキュリティと利便性の観点から、公開鍵認証を利用するのが一般的。

まずは基本を理解し、安全なリモート操作環境を構築しましょう。


参考

https://www.value-domain.com/media/ssh/
https://youtu.be/mp6pKLDd_4Q?si=Yu6uSbC8iVcevSk2
https://youtu.be/_GXBXx4FOuc?si=IHkjS-SCXvaMoxXw

Discussion