📝
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つの鍵の役割を理解する必要があります。
- 公開鍵: 誰に渡しても良い鍵。接続先のサーバーに事前に登録しておく。
- 秘密鍵: 自分だけが厳重に管理し、他人に渡してはいけない鍵。
認証のプロセス(チャレンジ・レスポンス)
- チャレンジ: サーバーがクライアントに対し、ランダムな値(チャレンジ)を送る。
- レスポンス: クライアントは手元の秘密鍵を使ってその値を暗号化し、サーバーに返す。
- 検証: サーバーは事前に登録された公開鍵でそのデータを復号する。値が一致すれば、正しい秘密鍵の持ち主であると判断され、認証が成功する。
この仕組みにより、秘密の情報そのものを送ることなく、安全に本人確認が行われます。
公開鍵認証の設定手順
実務でよく使われる公開鍵認証の設定の流れは以下の通りです。
-
鍵ペアの作成: クライアント側で
ssh-keygenなどのコマンドを使い、秘密鍵と公開鍵を作成する。 -
公開鍵の登録: 作成した公開鍵(
id_rsa.pubなど)の内容を、サーバー側のユーザーのホームディレクトリにある.ssh/authorized_keysファイルに追記する。 - 接続: 秘密鍵を指定してSSH接続を行う。
まとめ
SSHは、現代のサーバー運用において必須の技術です。
- 通信は常に暗号化され、安全性が保たれる。
- 基本コマンドは
ssh ユーザー@ホスト。 - セキュリティと利便性の観点から、公開鍵認証を利用するのが一般的。
まずは基本を理解し、安全なリモート操作環境を構築しましょう。
参考
Discussion