SSHとは?| セキュアシェル(SSH)プロトコル

セキュアシェル(SSH)プロトコルは、コンピュータ間のリモート暗号化接続を確立します。トンネリングも可能です。

学習目的

この記事を読み終えると、以下のことができるようになります。

  • セキュアシェル(SSH)プロトコルの定義
  • SSHの仕組みと安全性について説明する
  • SSHトンネリングを理解する
  • SSHのセキュリティリスクを説明する

関連コンテンツ


さらに詳しく知りたいとお考えですか?

是非、Cloudflareが毎月お届けする「theNET」を購読して、インターネットで最も人気のある洞察をまとめた情報を入手してください!

当社がお客様の個人データをどのように収集し処理するかについては、Cloudflareのプライバシーポリシーをご確認ください。

記事のリンクをコピーする

セキュアシェル(SSH)プロトコルとは?

セキュアシェル(SSH)プロトコルは、セキュリティで保護されていないネットワークを通してコンピュータに安全にコマンドを送信するための方法です。SSHは暗号理論を使用して、デバイス間の接続と認証を行い暗号化します。また、SSHはトンネリング(ポートフォワーディング)を可能にします。これは、データパケットが、他の方法では通過できないネットワークを通過できるようにすることです。SSHは、サーバーの遠隔操作やインフラ管理、ファイル転送などによく使用されます。

店舗のオーナーが出張中に、留守中も店が円滑に運営できるように従業員に遠方から指示を出すことがあります。同様に、SSHを使用することで管理者は遠方からサーバーやデバイスを管理することが可能になります。Telnetのような古いリモート管理プロトコルは、管理者のコマンドを誰もが閲覧できる形で転送します。(従業員が店主との通話をスピーカーフォンにした場合を考えて下さい。店内にいるすべてのお客様にプライベートな指示が聞こえてしまうでしょう)。SSHはTelnetとは異なりセキュアなものであり、これがSecure Shellという名前の由来となっています。

レポート
2025年セキュリティシグナルレポート

SSHでできることは?

リモート暗号化接続:SSHは、ユーザーのデバイスと遠く離れたマシン(多くの場合サーバー)との間の接続を確立します。暗号化を使用して、接続を通過するデータをスクランブル化します。傍受した側は、暗号を解読しない限り意味のない静的なランダムなデータしか見ることができません。(SSHは暗号化メソッドを採用しているため、部外者が復号化することは困難を極めます)。

トンネリング機能:トンネリングとは、ネットワーキングにおいて、通常では使用できないプロトコルや経路を使用して、ネットワーク上でパケットを移動させる方法のことです。トンネリングは、データパケット*をヘッダーと呼ばれる追加情報でラップし、宛先を変更することで機能します。SSHトンネルはポートフォワーディングと呼ばれる技術を使用して、あるマシンから別のマシンにパケットを送信します。SSHポートフォワーディングについては、以下で詳しく説明します。

*ネットワークを行き来するデータはすべて「パケット」と呼ばれる小さな塊に分割されます。

サインアップ
あらゆるCloudflareプランで実現するセキュリティとスピード

SSHの仕組みは?

TCP/IP

SSHは、インターネットの多くが依存するTCP/IPプロトコルスイートの上で動作します。TCP/IPはデータパケットを伝送し、配信します。TCPを使用するのは、SSHが他のトンネリングプロトコルと異なる点の1つです。一部のトンネリングプロトコルは、代わりに高速ではあるが信頼性の低いUDPを使用します。

公開鍵暗号

SSHは、公開鍵暗号と呼ばれるプロセスを経由して暗号化と認証を組み込んでいるため、「安全」です。公開鍵暗号は、2つの異なる鍵を使用してデータを暗号化または署名する方法です。鍵のひとつである公開鍵は、誰でも使うことができます。もう1つの鍵である秘密鍵は、その所有者により秘密に保たれます。この2つの鍵は互いに対応しているため、鍵の所有者の身元を確認するには、公開鍵に付随する秘密鍵を所有する必要があります。

これらの「非対称」鍵(値が異なるため、このように呼ばれます)は、接続の両側がチャネル上でさらに暗号化するために、同一の共有対称鍵を交換することも可能です。この交換が完了すると、両者は対称鍵を使用して交換するデータを暗号化します。

SSH接続では、双方が公開鍵/秘密鍵のペアを持ち、それぞれがこれらの鍵を使用して相手を認証します。これは、ほとんどの実装でクライアントサーバー接続においてWebサーバーの身元だけを確認するHTTPSと、SSHの相違点です。(その他の違いとしては、HTTPSでは通常クライアントはサーバーのコマンドラインにアクセスできないこと、ファイアウォールがSSHをブロックすることはあるがHTTPSをブロックすることはほとんどないことなどが挙げられます)。

認証

公開鍵暗号はSSHで接続されたデバイスを認証しますが、適切に保護されたコンピュータはSSHを使う人からの認証を必要とします。多くの場合、これはユーザ名とパスワードを入力する形式をとります。

認証が完了すると、ユーザーは自分のローカルマシンで実行しているかのように、リモートマシン上でコマンドを実行することができます。

SSHポートフォワーディング(「トンネリング」)

ポートフォワーディングは、二者間でメッセージを転送するようなものです。ボブがアリスにメッセージを送ると、アリスはそれをデイブに渡します。同様に、ポートフォワーディングは、あるマシンのIPアドレスとポートに向けられたパケットを、別のマシンのIPアドレスとポートに送信します。

例えば、ある管理者が、プライベートネットワーク内の自身が管理するサーバーにリモートから変更を加えたいとします。ただし、該当のサーバーはセキュリティ上の理由から、プライベートネットワーク内の他のコンピューターからのパケットしか受け取らないものとします。管理者は直接アクセスする代わりに、ネットワーク内の第二のサーバー(インターネットからのトラフィックを受信できるオープンなサーバー)に接続し、SSHポートフォワーディングを使用して該当のサーバーに接続することができます。該当のサーバーからは、管理者のパケットはプライベートネットワーク内部から来ているように見えます。

SSHを使用する

LinuxとMac OSにはSSHが組み込まれています。Windowsマシンは、SSHクライアントアプリをインストールする必要があります。MacとLinuxコンピュータでは、ユーザーはターミナルアプリを開き、直接SSHコマンドを入力することができます。

SSHは何に使うのか?

技術的には、SSHはネットワークを介して任意のデータを転送することができ、SSHトンネリングは無数の目的のために設定することができます。その中で、最も一般的なSSHの使用例は以下の通りです:

  • サーバー、インフラ、従業員用コンピューターのリモート管理
  • 安全なファイル転送(SSHはFTPのような暗号化されていないプロトコルよりも安全です)
  • ローカルマシンのポートをインターネットに公開することなく、クラウド上のサービスにアクセスする
  • プライベートネットワーク内のサービスへのリモート接続
  • ファイアウォールの制限を回避する

どのポートがSSH?

SSHのデフォルトポートは22番ポートです。ファイアウォールは、ファイアウォールの背後にあるサーバーの特定のポートへのアクセスはブロックする一方で、ポート22はオープンのままにしておくことがあります。そのため、SSHはファイアウォールの先にあるサーバーにアクセスするのに便利です。ポート22に向けられたパケットはブロックされず、他のポートに転送することが可能です。

SSHに関連するセキュリティリスクは?

SSHアクセスには通常、サーバーへのアプリケーションのインストールや、データの削除、改ざん、抽出など、より高い権限が付属しているため、攻撃者や良性のインサイダー(良性インサイダー)が使うと有害になることもあります。SSHは、個人データを流出させたり、安全なネットワークにバックドア経路を開いたり、サーバーのルートアクセス権を獲得するために、記録された多くの攻撃で使用されてきました。

SSHはまた、ポート22を(多くの場合と同様)ブロックしないファイアウォールを通過することができ、攻撃者がセキュリティで保護されたネットワークに侵入することができてしまいます。

また、攻撃者は個人のコンピューターやサーバーにアクセスするためのSSH鍵を盗むことができます。実際、大規模な組織では多数のサーバーが何千、何百万もの鍵を使う可能性があり、それらの鍵を手動で追跡・更新するのはほとんど不可能なため、SSH鍵の管理は大きなセキュリティ問題となっています。SSH鍵は明示的に無効化しない限り有効期限が切れないため、一度鍵を入手した攻撃者は数か月から数年にわたりアクセスし続けることができてしまいます。

SSHと他のトンネリング用プロトコルとの違いは?

SSHと他のトンネリングプロトコルとの主な違いの一つは、それらが動作するOSI層です。GRE、IP-in-IP、IPsecはすべてネットワーク層のプロトコルです。そのため、ポート(トランスポート層の概念)を意識する必要が無く、IPアドレス間で動作します。(SSHの正確なOSI層は厳密には定義されていませんが、多くの情報源はそれを第7層/アプリケーション層のプロトコル(HTTP、FTP、SMTPなど)として記述しています)。

もう1つの違いは、SSHがTCPを使用することです。前述したように、TCPはトランスポート層のプロトコルであり、インターネット上で使用される主要なプロトコルのひとつです。トランスポート層で広く使われているもう一つのプロトコルはUDP(User Datagram Protocol)です。UDP は「ベストエフォート型」のトランスポートプロトコルであり、パケットの配信を保証せずにパケットを送信するため、高速になりますが、パケット損失が発生することがあります。対して、TCPはUDPよりも低速ではありますが、すべてのパケットを順番に配送することが保証されているため、信頼性の高いものになっています。

IPsec は、パケットをファイアウォールに通すために、TCPの代わりにUDPを使用します。そのため、 IPsecトンネルは通常SSHトンネルよりも高速ですが、転送中にパケットが失われる可能性があります。GREとIP-in-IP は、TCPまたはUDPのいずれかで使用できます。

最後に、SSHは一度に1つのアプリを暗号化するだけで、デバイスを行き来するすべてのトラフィックを暗号化するわけではありません。これは、どのアプリのものであるかを問わずネットワークトラフィックをすべて暗号化するIPsecと、SSHとの相違点です。このため、SSHはVPN接続の確立には使用されません。

CloudflareがSSHの安全性を高める仕組み

SSHにはセキュリティリスクが伴うものの、生産性を維持するために多くの組織が依存しています。こうしたリスクを軽減するため、CloudflareはSASEプラットフォームの一部として、SSH with Access for Infrastructureを提供しています。このサービスは、SSHにZero Trustの概念を適用しており、企業はこのサービスを利用することでユーザーがSSHサーバーに接続する方法をきめ細かく制御することができます。これにより、ユーザーができることが制限され、攻撃者や内部関係者による不正なSSH使用の影響を軽減することができます。

SSH with Access for Infrastructureは、SSH鍵を管理する必要性(前述のように大きな課題)も排除します。代わりに、組織はCloudflareの管理下にある認証局(CA)によって発行された短期間のSSH証明書を使用することができます。

Cloudflareを利用すると、企業はSSHへのアクセスと使用状況を監視し、記録することもできます。これは、インシデントの復旧と規制コンプライアンスの両方に不可欠な機能です

SSH with Access for Infrastructureの詳細については、こちらをご覧ください。

よくある質問

SSHとは?

SSH(Secure Shell)は、コンピューター同士を安全に接続するためのネットワークプロトコルで、接続を暗号化してセキュアなリモートアクセスを実現します。TCPポートの22番を使用して動作し、認証、暗号化、整合性を提供し、公共のインターネット上などのセキュリティの低いネットワークで送信されるデータを保護します。

SSHキーはどのようにユーザーを認証するのか?

SSHキーでは、パスワードではなく、公開鍵と秘密鍵のペアを使用した非対称暗号を通じてユーザーを認証します。秘密鍵をクライアントのシステム上に、公開鍵をサーバーに置くことで、ネットワーク上で実際の認証情報を送信することなくセキュアに認証することができます。

SSHトンネリングの利点とは?

SSHトンネリングとは、安全な接続を確立し、その中にデータを通すことで、暗号化されていないトラフィックを効果的に暗号化する仕組みです。これにより、安全なポートフォワーディングが可能になり、転送中の機密情報の傍受を防ぎます。

SSHとTelnetの違いは?

Telnetではデータは平文で送信されますが、SSHではすべての通信が暗号化されるため、盗聴者や中間者攻撃を防止します。SSHは事実上、その優れたセキュリティ機能により、遠隔にあるサーバーにアクセスするための標準としてTelnetに代わって使われるようになりました。

一般的に使われるSSH鍵の種類は?

一般的なSSH鍵の種類には、RSA、ECDSA、EdDSAなどがあり、それぞれ提供するセキュリティレベルとパフォーマンスが異なります。Ed25519は、楕円曲線を用いたEdDSA署名方式の1つで、短い鍵でも強いセキュリティを実現し、処理も高速なため、一般的に使用されるようになっています。