SSHとは?リモート接続の鍵を握る技術を分かりやすく解説

Web

「サーバーにSSHで接続してください」

エンジニアやWeb制作の仕事をしていると、こんな言葉を聞くことがあります。でも、SSHって一体何なのでしょうか?

簡単に言うと、SSHは離れた場所にあるコンピューターを安全に操作するための技術です。

家にいながら会社のサーバーを操作したり、日本から海外のサーバーを管理したり。まるで目の前にそのコンピューターがあるかのように使えるんです。しかも、安全に。

この記事では、SSHの基本から実際の使い方、セキュリティのポイントまで、順番に分かりやすく説明していきます。

スポンサーリンク

SSHの正式名称と読み方

名前の由来

SSHは「Secure Shell(セキュアシェル)」の略です。

読み方は「エスエスエイチ」です。

それぞれの単語の意味:

  • Secure(セキュア):安全な、セキュリティが確保された
  • Shell(シェル):コンピューターと対話するためのプログラム

つまり、「安全な対話プログラム」という意味になります。

なぜ「Shell」なの?

コンピューター用語で「シェル」は、OSの中核(カーネル)を包む「殻」のような存在です。

卵に例えると:

  • 黄身:カーネル(OSの中核)
  • 白身:各種プログラム
  • :シェル(ユーザーとOSをつなぐ)

ユーザーはシェルを通じて、コンピューターに命令を送るんです。

SSHが生まれた理由

インターネット初期の問題

1990年代前半、インターネットが普及し始めた頃、リモート接続には「Telnet(テルネット)」や「rlogin」が使われていました。

でも、これらには致命的な欠点がありました。

パスワードが丸見え!

当時の通信は暗号化されていなかったので、悪意のある人が通信を盗み見ると、パスワードや重要な情報が全部バレてしまったんです。

SSHの誕生

1995年、フィンランドのヘルシンキ工科大学の研究者、タトゥ・ユレーネン氏がSSHを開発しました。

きっかけは、大学のネットワークがパスワード盗聴の被害に遭ったこと。「もう二度とこんなことが起きないように」という思いから、SSHが生まれたのです。

SSHの仕組みを分かりやすく

暗号化通信の基本

SSHの最大の特徴は、すべての通信が暗号化されることです。

普通の手紙とSSHの違い:

普通の手紙(Telnet):

  1. メッセージをそのまま封筒に入れる
  2. 配達員が中身を読める
  3. 途中で書き換えられる可能性も

SSHの手紙:

  1. メッセージを暗号化して金庫に入れる
  2. 鍵を持っている人だけが開けられる
  3. 改ざんされたらすぐ分かる

接続の流れ

SSHで接続するときの流れを、ホテルのチェックインに例えてみましょう。

  1. ノック(接続要求)
    • 「接続したいです」とサーバーに伝える
  2. 身分証明書の確認(サーバー認証)
    • サーバーが本物か確認
    • 偽物のサーバーでないかチェック
  3. 宿泊者の確認(ユーザー認証)
    • パスワードまたは鍵で本人確認
    • 正しいユーザーか判定
  4. 部屋の鍵をもらう(セッション確立)
    • 安全な通信路が確立
    • これ以降の通信はすべて暗号化

SSHでできること

1. リモートコマンド実行

離れたサーバーで命令を実行できます。

例えば:

  • ファイルの作成や削除
  • プログラムの実行
  • システムの設定変更
  • ログの確認

まるで、そのコンピューターの前に座っているかのように操作できるんです。

2. ファイル転送(SCP/SFTP)

SSHの技術を使って、安全にファイルを送受信できます。

SCP(Secure Copy)

  • 簡単なファイルコピー
  • コマンド一つで転送

SFTP(SSH File Transfer Protocol)

  • より高機能なファイル転送
  • 対話的な操作が可能
  • 転送の中断・再開もできる

3. ポートフォワーディング(トンネリング)

難しそうな名前ですが、要は「安全な通り道を作る」機能です。

例:自宅から会社の内部システムにアクセス

  1. SSHで会社のサーバーに接続
  2. そのサーバー経由で内部システムにアクセス
  3. まるで会社にいるかのように使える

4. X11フォワーディング

LinuxのGUIアプリケーションを、リモートで表示できます。

サーバーで動いているアプリの画面を、自分のパソコンに表示させる技術です。

SSHの認証方法

パスワード認証

一番シンプルな方法です。

メリット:

  • 設定が簡単
  • どこからでもアクセス可能

デメリット:

  • パスワードが漏れるリスク
  • 総当たり攻撃を受ける可能性
  • 毎回入力が面倒

公開鍵認証

より安全な認証方法です。

仕組みを家の鍵に例えると:

  1. 鍵のペアを作る
    • 公開鍵(鍵穴)
    • 秘密鍵(鍵)
  2. サーバーに鍵穴を設置
    • 公開鍵をサーバーに登録
  3. 鍵で開ける
    • 秘密鍵を使って接続
    • 鍵を持っている人だけが入れる

メリット:

  • パスワードより安全
  • 自動ログインが可能
  • 秘密鍵にパスフレーズで二重の保護

デメリット:

  • 初期設定がやや複雑
  • 秘密鍵の管理が必要

実際にSSHを使ってみよう

Windows での使い方

方法1:PowerShell/コマンドプロンプト

Windows 10以降なら、標準で使えます!

ssh ユーザー名@サーバーのアドレス

例:

ssh tanaka@192.168.1.100

方法2:専用ソフトを使う

PuTTY(パティ)

  • 無料の定番ソフト
  • 日本語版もある
  • 細かい設定が可能

Tera Term(テラターム)

  • 日本製のソフト
  • 使いやすい
  • マクロ機能が便利

Mac/Linux での使い方

ターミナルを開いて、そのまま使えます。

ssh ユーザー名@サーバーのアドレス

初回接続時の確認:

The authenticity of host 'example.com' can't be established.
RSA key fingerprint is SHA256:xxxxx...
Are you sure you want to continue connecting (yes/no)?

これは「このサーバーに初めて接続するけど、信頼していい?」という確認です。「yes」と入力して進みます。

便利な使い方

SSHの設定ファイル

よく使うサーバーは、設定ファイルに登録しておくと便利です。

~/.ssh/config ファイルに記載:

Host myserver
    HostName 192.168.1.100
    User tanaka
    Port 22

これで、簡単に接続できます:

ssh myserver

接続を維持する設定

接続が切れやすい場合の対策:

Host *
    ServerAliveInterval 60
    ServerAliveCountMax 3

60秒ごとに生存確認を送り、接続を維持します。

SSHキーの作り方

基本的な手順

  1. キーペアの生成
ssh-keygen -t rsa -b 4096

質問に答えていきます:

  • 保存場所(通常はEnterでOK)
  • パスフレーズ(追加のパスワード)
  1. 公開鍵をサーバーに登録
ssh-copy-id ユーザー名@サーバーアドレス

手動で登録する場合:

  1. 公開鍵の内容をコピー
  2. サーバーの ~/.ssh/authorized_keys に追加
  3. 接続テスト
ssh ユーザー名@サーバーアドレス

パスワードなしで入れれば成功!

キーの種類と強度

RSA(アールエスエー)

  • 最も一般的
  • 2048ビット以上推奨
  • 互換性が高い

Ed25519(エドワーズ25519)

  • 新しい方式
  • より安全で高速
  • 短いキーで高セキュリティ
ssh-keygen -t ed25519

セキュリティを高める設定

サーバー側の設定

1. ルートログインの禁止

/etc/ssh/sshd_config を編集:

PermitRootLogin no

管理者権限での直接ログインを防ぎます。

2. パスワード認証の無効化

公開鍵認証のみにする:

PasswordAuthentication no

3. ポート番号の変更

デフォルトの22番から変更:

Port 2222

単純ですが、自動攻撃を大幅に減らせます。

クライアント側の対策

秘密鍵の保護

  1. 適切な権限設定
chmod 600 ~/.ssh/id_rsa
  1. パスフレーズの設定
  • 秘密鍵に追加のパスワード
  • 万が一盗まれても使えない
  1. 定期的な鍵の更新
  • 年に1回程度は新しい鍵に

よくあるトラブルと解決法

接続できない!

原因1:サーバーが起動していない

確認方法:

ping サーバーアドレス

原因2:ファイアウォールでブロック

  • ポート22(またはSSHポート)が開いているか確認
  • セキュリティグループの設定を確認(クラウドの場合)

原因3:認証の失敗

  • ユーザー名が正しいか
  • パスワードが正しいか
  • 公開鍵が登録されているか

Permission denied エラー

権限の問題

# ホームディレクトリ
chmod 755 ~

# .sshディレクトリ
chmod 700 ~/.ssh

# authorized_keys
chmod 600 ~/.ssh/authorized_keys

接続が遅い

DNS逆引きの無効化

サーバー側の設定:

UseDNS no

不要な認証方法の無効化

GSSAPIAuthentication no

SSHの応用技術

多段SSH(踏み台サーバー経由)

セキュリティのため、直接アクセスできないサーバーへの接続:

ssh -J 踏み台サーバー 目的のサーバー

設定ファイルでの記述:

Host target-server
    HostName 10.0.0.100
    ProxyJump bastion-server

SSHトンネル

ローカルフォワード

リモートのサービスをローカルで使う:

ssh -L 8080:localhost:80 サーバー

ブラウザで http://localhost:8080 にアクセスすると、サーバーの80番ポートに繋がります。

リモートフォワード

ローカルのサービスをリモートで公開:

ssh -R 8080:localhost:3000 サーバー

SSHエージェント

秘密鍵のパスフレーズを一度だけ入力:

# エージェント起動
eval $(ssh-agent)

# 鍵を追加
ssh-add ~/.ssh/id_rsa

これで、セッション中はパスフレーズ不要に。

クラウド時代のSSH

AWS(Amazon Web Services)

EC2インスタンスへの接続:

ssh -i keypair.pem ec2-user@サーバーアドレス

特徴:

  • インスタンス作成時にキーペアを選択
  • pemファイルで認証

Google Cloud Platform

gcloud compute ssh インスタンス名

gcloudコマンドが鍵の管理もしてくれます。

Azure

ssh -i ~/.ssh/id_rsa azureuser@サーバーアドレス

モバイルからのSSH

iOS アプリ

Termius

  • 使いやすいUI
  • 複数サーバー管理
  • 同期機能あり

Prompt

  • 高機能
  • タッチ操作に最適化

Android アプリ

JuiceSSH

  • 無料で高機能
  • プラグイン対応

ConnectBot

  • オープンソース
  • シンプル

使用時の注意

  • 公共Wi-Fiでは特に注意
  • 二要素認証の併用推奨
  • 秘密鍵の管理を厳重に

SSHの代替技術

Mosh(Mobile Shell)

接続が不安定な環境向け:

  • 接続が切れても自動再接続
  • 遅延があっても快適
  • モバイル環境に最適

VPN + リモートデスクトップ

GUIが必要な場合:

  • VPNで安全な接続を確立
  • リモートデスクトップで画面操作

Web-based SSH

ブラウザからSSH接続:

  • Guacamole
  • Shell In A Box
  • Wetty

インストール不要で便利ですが、セキュリティには注意が必要です。

よくある質問

Q: SSHとSSLの違いは?

A: 用途が違います。

  • SSH:サーバーへのリモート接続用
  • SSL/TLS:Webサイトの暗号化通信用

両方とも暗号化技術を使いますが、目的が異なります。

Q: Windowsサーバーにも使える?

A: 使えます!

Windows Server 2019以降は標準でOpenSSHサーバーが利用可能。それ以前のバージョンでも、別途インストールすれば使えます。

Q: パスワードと公開鍵、どっちが安全?

A: 公開鍵認証の方が安全です。

理由:

  • パスワードは推測や総当たりのリスク
  • 公開鍵は数学的に解読がほぼ不可能
  • 秘密鍵を盗まれない限り安全

Q: SSHの通信は監視されない?

A: 通信内容は暗号化されているので安全です。

ただし:

  • 接続先は分かる
  • 通信量は分かる
  • 接続時間は分かる

内容は見えませんが、「誰がどこに接続しているか」は分かります。

セキュリティのベストプラクティス

やるべきこと

  1. 公開鍵認証を使う
  2. 強いパスフレーズを設定
  3. 定期的に鍵を更新
  4. 不要なユーザーを削除
  5. ログを監視
  6. Fail2banなどで自動ブロック
  7. 二要素認証の導入を検討

やってはいけないこと

  1. デフォルトポートのまま使う
  2. rootでの直接ログインを許可
  3. 弱いパスワードを使う
  4. 秘密鍵を共有する
  5. 古いSSHバージョンを使い続ける
  6. 公共の場所で秘密鍵を使う

まとめ:SSHは現代ITの必須スキル

SSHについて、基本から応用まで解説してきました。

押さえておくべきポイント:

  1. SSHは安全なリモート接続技術
  2. すべての通信が暗号化される
  3. パスワードより公開鍵認証が安全
  4. 適切な設定でセキュリティを高められる
  5. クラウド時代には必須の技術

最初は黒い画面に戸惑うかもしれません。でも、SSHを使いこなせるようになると、どこからでもサーバーを管理できる自由を手に入れられます。

リモートワークが当たり前になった今、SSHはITエンジニアだけでなく、Webに関わるすべての人にとって重要な技術です。

まずは自分のパソコンでSSHコマンドを試してみることから始めてみませんか?きっと、その便利さと安全性に驚くはずです。

安全で快適なリモート接続ライフを送りましょう!

コメント

タイトルとURLをコピーしました