「SSHって何?」「サーバーに接続するって、どうやるの?」
インフラやサーバーの勉強を始めると必ず出てくるSSH。これは、離れた場所にあるサーバーに安全に接続するための技術です。
この記事では、SSHとは何か、なぜ必要なのか、どうやって使うのかを、初心者の方にもわかりやすく解説します。
SSHとは?
SSH(Secure Shell)は、ネットワーク経由で別のコンピュータに安全に接続し、操作するためのプロトコル(通信の約束事)です。
読み方は「エスエスエイチ」。言葉の意味を確認しましょう。
| 用語 | 意味 |
|---|---|
| Secure | 安全な |
| Shell | コンピュータを操作するためのインターフェース |
つまり、「安全なシェル接続」という意味です。暗号化された通信路を通じて、サーバーのシェル(コマンドライン)を操作できます。
どんな場面で使うの?
SSHは主に以下のような場面で使われます。
- サーバー管理:クラウド上のサーバー(AWS EC2など)にログインして操作
- ファイル転送:サーバーとファイルをやり取り(SCP、SFTP)
- 開発作業:リモートの開発環境で作業
- Git操作:GitHubやGitLabとの認証
なぜSSHが必要なのか
SSHが登場する前は、Telnetというプロトコルが使われていました。しかしTelnetには大きな問題がありました。
Telnetの問題点
Telnetは通信内容を暗号化しないため、以下のようなリスクがありました。
- パスワードが平文(そのままの文字)でネットワーク上を流れる
- 第三者に通信内容を盗み見られる可能性がある
- なりすましや改ざんのリスク
SSHのメリット
SSHは、これらの問題を解決するために開発されました。
- 暗号化:すべての通信内容が暗号化される
- 認証:接続先が正しいサーバーか確認できる
- 安全な認証方式:パスワード認証だけでなく、公開鍵認証も使える
現在では、Telnetはほとんど使われず、リモート接続といえばSSHが標準となっています。
SSHの仕組み
SSHがどのように安全な通信を実現しているのか、簡単に説明します。
暗号化の仕組み
SSHは、公開鍵暗号と共通鍵暗号を組み合わせて通信を暗号化します。
- 最初に、安全に共通鍵(セッションキー)を交換
- その後の通信は、高速な共通鍵暗号で暗号化
これにより、第三者が通信を傍受しても、内容を解読することはできません。
デフォルトのポート番号
SSHは、デフォルトでポート22番を使用します。セキュリティ上の理由から、別のポート番号に変更することもあります。
SSHの2つの認証方式
SSHには主に2つの認証方式があります。
1. パスワード認証
ユーザー名とパスワードで認証する最もシンプルな方式です。
メリット:
- 設定が簡単
- 追加の準備が不要
デメリット:
- パスワードが推測されるリスク
- ブルートフォース攻撃(総当たり攻撃)を受けやすい
2. 公開鍵認証
より安全な認証方式です。本番環境では、こちらが推奨されます。
仕組み:
- 秘密鍵と公開鍵のペアを生成
- 公開鍵をサーバーに登録
- 接続時、サーバーが公開鍵を使って認証チャレンジを作成
- クライアントが秘密鍵で応答
- サーバーが検証し、認証成功
メリット:
- パスワードがネットワーク上を流れない
- ブルートフォース攻撃に強い
- 秘密鍵を持っている人だけがログインできる
| 方式 | セキュリティ | 設定の手軽さ | 推奨度 |
|---|---|---|---|
| パスワード認証 | △ | ◎ | 開発・学習用 |
| 公開鍵認証 | ◎ | ○ | 本番環境推奨 |
CASUAL TALK
服装自由・オンライン対応
まずは気軽に話しませんか?
応募じゃなくてOK。「ちょっと話を聞いてみたい」だけでも大歓迎。30分のカジュアル面談で、あなたの可能性が見えてきます。
カジュアル面談を予約するSSHの基本的な使い方
実際にSSHを使う方法を見ていきましょう。
接続コマンド
基本的な接続コマンドは以下の通りです。
# 基本形
ssh ユーザー名@サーバーのIPアドレス
# 例:192.0.2.1にubuntuユーザーで接続
ssh ubuntu@192.0.2.1
# ポート番号を指定する場合
ssh -p 2222 ubuntu@192.0.2.1
# 秘密鍵を指定する場合
ssh -i ~/.ssh/mykey.pem ubuntu@192.0.2.1
公開鍵の生成
公開鍵認証を使うには、まず鍵のペアを生成します。
# 鍵の生成(Ed25519を推奨)
ssh-keygen -t ed25519
# または RSA(4096bit)
ssh-keygen -t rsa -b 4096
このコマンドを実行すると、以下のファイルが生成されます。
- ~/.ssh/id_ed25519:秘密鍵(絶対に他人に渡さない!)
- ~/.ssh/id_ed25519.pub:公開鍵(サーバーに登録する)
公開鍵のサーバーへの登録
公開鍵をサーバーに登録するには、サーバーの ~/.ssh/authorized_keys ファイルに追加します。
# 便利なコマンド(パスワード認証が有効な場合)
ssh-copy-id ubuntu@192.0.2.1
接続の切断
# 接続を切断
exit
# または Ctrl + D
SSHを使う際の注意点
SSHを安全に使うためのポイントを紹介します。
1. 秘密鍵の管理
秘密鍵は絶対に他人に渡してはいけません。流出すると、そのサーバーに誰でもログインできてしまいます。
- 秘密鍵のパーミッションは600(自分だけ読み書き可能)に設定
- 秘密鍵にパスフレーズを設定する
- GitHubなどにうっかりアップロードしない
2. 本番環境ではパスワード認証を無効化
本番環境では、パスワード認証を無効化し、公開鍵認証のみにすることを推奨します。
3. rootでの直接ログインを禁止
root(管理者)ユーザーで直接ログインできる設定は危険です。一般ユーザーでログインし、必要なときだけ sudo を使いましょう。
WindowsでSSHを使うには
Windowsでは、以下の方法でSSHを使えます。
- Windows 10/11標準のOpenSSH:コマンドプロンプトやPowerShellから使用可能
- Tera Term:日本で人気のSSHクライアント
- PuTTY:世界的に有名なSSHクライアント
- WSL(Windows Subsystem for Linux):Linux環境でSSHを使用
まとめ
この記事で解説した内容をまとめます。
| 項目 | 内容 |
|---|---|
| SSHとは | 安全にリモートサーバーに接続するためのプロトコル |
| ポート番号 | デフォルトは22番 |
| 認証方式 | パスワード認証、公開鍵認証 |
| 推奨認証 | 公開鍵認証(本番環境では必須) |
| 秘密鍵の扱い | 絶対に流出させない、パーミッション600 |
SSHは、サーバー管理やインフラ業務において必須のスキルです。まずはローカル環境や学習用サーバーで接続練習をして、基本操作に慣れておきましょう。
CASUAL TALK
服装自由・オンライン対応
まずは気軽に話しませんか?
応募じゃなくてOK。「ちょっと話を聞いてみたい」だけでも大歓迎。30分のカジュアル面談で、あなたの可能性が見えてきます。
カジュアル面談を予約する