SSH(Secure Shell) えすえすえいち
簡単に言うとこんな感じ!
SSHは「離れたサーバーに安全に接続するための仕組み」だよ。鍵のかかった専用トンネルをネット上に掘って、その中でコマンド操作やファイル転送をする感じ!盗み見も改ざんもできないから、サーバー管理の定番手段なんだ。
SSHとは
SSH(Secure Shell) は、ネットワーク越しに別のコンピューターへ安全にログインし、操作するためのプロトコル(通信規約)です。インターネットのような信頼できないネットワークを経由しても、通信内容を暗号化することで盗聴・改ざんを防ぎます。
SSHが登場する前は Telnet というプロトコルが使われていましたが、Telnetは通信内容が平文(暗号化なし)のため、パスワードを含むすべての操作がネット上で丸見えでした。SSHはこの問題を解決するために1995年に設計され、現在では世界中のサーバー管理の標準手段として定着しています。
実務では「クラウド上のサーバーにアクセスして設定を変更する」「ファイルを安全に転送する」「リモートでバッチ処理を実行する」といった場面で日常的に使われます。情シスやエンジニアがサーバーを操作するとき、ほぼ確実にSSHを使っていると思ってください。
SSHの仕組みと構成要素
SSHの通信は大きく「認証」と「暗号化されたセッション」の2段階で成り立っています。
| フェーズ | 内容 |
|---|---|
| ① 接続確立 | クライアントがサーバーのTCPポート22番に接続を要求 |
| ② サーバー認証 | サーバーは自分のホスト公開鍵を提示し、クライアントが本物か確認 |
| ③ 暗号化ネゴシエーション | 使用する暗号アルゴリズムを双方で合意 |
| ④ ユーザー認証 | パスワードまたは公開鍵認証でユーザーを確認 |
| ⑤ セッション開始 | 暗号化されたトンネル上でコマンド実行・ファイル転送などが可能に |
認証方式:パスワード認証 vs 公開鍵認証
SSHのユーザー認証には主に2つの方式があります。
| 方式 | 仕組み | セキュリティ | 利便性 |
|---|---|---|---|
| パスワード認証 | IDとパスワードで認証 | △(総当たり攻撃のリスクあり) | ◎ |
| 公開鍵認証 | 「秘密鍵(手元に保管)」と「公開鍵(サーバーに登録)」のペアで認証 | ◎(鍵がなければ侵入不可) | ○ |
セキュリティを重視する場合は公開鍵認証が推奨されます。玄関の鍵と錠のように、サーバー側には錠(公開鍵)だけを置き、本物の鍵(秘密鍵)は自分のPCから絶対に出さない運用です。
覚え方:「SSHは暗号トンネル」
🔑 Secure(安全な)Shell(シェル操作)=「鍵のかかったトンネルで操作する」
「Secure = 鍵付き」「Shell = サーバーのコマンド画面」と分解すると覚えやすいです。
歴史と背景
- 1995年 — フィンランドのタトゥ・ウルネン(Tatu Ylönen)がTelnetの盗聴被害を受けたことをきっかけにSSH-1を開発・公開
- 1996年 — SSH-2(SSH プロトコルバージョン2)が設計される。セキュリティと機能が大幅に向上
- 1999年 — オープンソース実装 OpenSSH がリリース。BSD/Linux系OSに標準搭載され急速に普及
- 2006年 — IETF(インターネット技術標準化機関)がSSH-2を正式にRFC 4251〜4254として標準化
- 2010年代〜 — クラウドサービス(AWS・GCPなど)の普及とともに、サーバー管理の入口として事実上の必須プロトコルに
- 現在 — パスワード認証を無効化し公開鍵認証のみにする運用が業界標準となっている
SSHとTelnetの比較・関連技術
SSHが解決した最大の課題は「Telnetの平文通信」です。視覚的に対比すると以下の通りです。
SSHの主な用途・機能
| 機能 | 説明 | 代表的な使い方 |
|---|---|---|
| リモートログイン | サーバーのコマンドラインを遠隔操作 | ssh user@サーバーIP |
| SCP / SFTP | SSH上でのファイル転送 | サーバーへのファイルアップロード |
| ポートフォワーディング | SSHトンネルを使った通信の中継 | 社内システムへの安全な接続 |
| SSHトンネリング | 暗号化されていないプロトコルをSSH経由で保護 | データベース接続の安全化 |
関連プロトコル・ツール早見表
| 名前 | 種別 | 用途 |
|---|---|---|
| OpenSSH | ソフトウェア | 最も普及したSSH実装(Linux/Mac標準搭載) |
| PuTTY | ソフトウェア | Windows向けSSHクライアント |
| SFTP | プロトコル | SSH上で動くファイル転送プロトコル |
| SCP | コマンド | SSH経由でのファイルコピー |
| Telnet | プロトコル | SSHの前身。平文通信のため現在は非推奨 |
関連する規格・RFC
| 規格・RFC番号 | 内容 |
|---|---|
| RFC 4251 | SSHプロトコルアーキテクチャ全体の定義 |
| RFC 4252 | SSH認証プロトコルの仕様 |
| RFC 4253 | SSHトランスポート層プロトコルの仕様(暗号化・鍵交換) |
| RFC 4254 | SSHコネクションプロトコル(チャンネル多重化) |
| RFC 4716 | SSH公開鍵ファイルのフォーマット定義 |