セキュアシェル(SSH)は、安全でないネットワーク経由でユーザーがリモートサーバーに安全にアクセスできる、広く利用されているネットワークプロトコルです。SSHは、サーバーとクライアントの間に暗号学的に安全な接続を確立し、その後の通信が暗号化され、改ざんされていないことを保証します。Linux、Unix、macOSなど、さまざまなオペレーティングシステムで一般的に使用されています。
SSHは、複数のセキュリティ上の欠陥を抱えていたRloginやTelnetなどのプロトコルを置き換えるため、1995年に開発されました。SSH1は、リモートシステムへの暗号化されたログイン経路をユーザーに提供しました。共通鍵暗号やポートフォワーディングなどの機能も備えていました。
しかし、サイバー攻撃を受けやすくする多くのセキュリティ上の欠陥がありました。これを受けてSSH2が開発されました。2006年に公開され、現在も使われているSSH2プロトコルには、Diffie–Hellman鍵交換やメッセージ認証コード(MAC)など、追加のセキュリティ対策が盛り込まれています。
SSHを使えば、ファイルの安全な転送、ネットワークインフラの管理、アプリやデバイスへのリモートアクセス、コマンドの実行が可能です。セッションの認証と暗号化ができるため、SSHはサイバー攻撃や情報窃取に対する強固な防御を提供します。
セキュアシェルプロトコルの仕組みとは?
SSHプロトコルは、ネットワーク内でクライアント/サーバーアーキテクチャモデルに基づいて動作します。通信はLinuxのターミナルシェルなどのシェルを介して行われます。クライアントは、次のようなコマンドを使ってリモートサーバーに接続します。
ssh UserName@SSHserver.example.comプロセスを認証して承認するため、SSHは公開鍵と秘密鍵によるDiffie–Hellman鍵交換メカニズムを使用し、データに安全にアクセスします。クライアントが初めてサーバーへの接続を試みると、サーバーはクライアントに身元の証明を求めます。これに対しクライアントは、身元を確立するために有効な認証情報を提示する必要があります。クライアントが不正な認証情報を提示した場合、認証は拒否されます。

サーバーは公開鍵を使ってチャレンジメッセージを暗号化し、クライアントからの応答を待ちます。クライアントが正しい秘密鍵でチャレンジメッセージを復号できれば、正当なクライアントであることが確認され、両者の通信が許可されます。
秘密鍵にはユーザーだけがアクセスできるため、常に安全に保管することが重要です。秘密鍵を公開すると、権限のない人物が業務上重要なシステムにアクセスできてしまいます。一方、公開鍵はクライアントとリモートサーバーの双方で使用されるため、両者の通信プロセスに不可欠な要素です。
SSHトンネリング
サーバーが、アクセスできないローカルポート上のデータにアクセスしたいとします。パブリックインターネットを通過するデータを盗まれないようにしながら、ファイアウォールを回避するにはどうすればよいでしょうか。
ネットワークトンネリングとは、 安全なトンネルを介して、ローカルポート(自分のコンピューター上の宛先ポート)とリモートポートの間で双方向接続を可能にするプロセスです。SSHトンネルはハッシュアルゴリズムと共通鍵暗号を使ってデータを暗号化し、データ転送中の安全性を確保します。
簡単に言えば、SSHトンネリングを使うと、クライアントとサーバーの間にすでに確立されたSSH接続を通じて、ローカルコンピューターからリモートサーバーへの新しい接続を設定できます。SSHトンネリングは、使いやすく、ファイアウォールを回避できることから、企業に好まれています。
SSHの主な用途とは?
SSH接続は主に次の目的で使われます。
- 安全でない経路を通じてリソースを安全に転送する。
- 企業データや業務プロセスへの安全なアクセスを確保する。
- リモートコマンドを発行する。
- ポートを転送する。
- X11フォワーディングを実行する。
- オペレーティングシステムやルーターを管理する。
- コンピューター間でファイルを転送する。
SSHの安全性は?
SSHは一般に、現在利用できる最も安全な暗号化方式の1つと考えられており、現在では世界中のサーバーのほぼ半数と、ほぼすべてのLinuxコンピューターで使われています。
SSH鍵はクライアントとサーバー間のトラフィックを暗号化し、悪意のある攻撃者による盗聴や復号を防ぎます。しかし、組織内でSSH鍵が増えると、放置され、忘れられがちなSSH鍵を悪用してネットワークへの特権アクセスを得ようとするサイバー犯罪者に狙われるリスクが高まります。その結果、組織や利害関係者に重大な被害が生じる可能性があります。
SSHは、パスワードやユーザー名を推測する総当たり攻撃などにも脆弱です。SSHに対する大きな脅威の1つは、ハッカーがSSH鍵を悪用してサーバーへのrootアクセスを取得し、悪意のあるマルウェアをインストールすることです。確認は取れていませんが、Edward SnowdenはSSH鍵の悪用に成功し、2013年に米国家安全保障局(NSA)へ侵入したとされています。
以下を導入すること、多要素認証(MFA)、ファイアウォールの使用、デフォルト設定の変更、追跡されていない鍵や孤立した鍵の削除、鍵の定期的なローテーションは、SSHを安全にする方法の一部です。
セキュアシェル接続にはどのポートを使う?
ポート22は、SSHプロトコルでデフォルトに設定されているポートです。 SSHクライアントがSSHサーバーへの接続を希望すると、ポート22でサーバーに通信要求を送信します。接続が確立すると、サーバーとクライアントは暗号鍵を交換し、それを使って両者の間に安全で暗号化された通信チャネルを構築します。
ポート22はデフォルトですが、SSHを別のポートで動作させることも可能です。SSHのポート番号を変更するには、SSHサーバーの設定ファイルを見つけ、ポート番号を任意の番号に変更します。
SSHと他のプロトコルの比較
SSHとTelnet
Telnetは1969年に開発されたネットワークプロトコルで、ユーザーがリモートサーバーにアクセスできるようにします。SSHは、セキュリティが大幅に優れていることから、時とともにTelnetにほぼ取って代わりました。
- TelnetとSSHの主な違いの1つは、Telnetがデータを平文で送信するのに対し、SSHはデータを暗号化するため、非常に安全であることです。
- SSHはデフォルトでポート22を使いますが、 ポート番号は変更できます。Telnetはポート23を使い、LANで動作するように設計されています。
- SSHは認証に公開鍵暗号を使います。Telnetはユーザーに認証機能を一切提供しません。
- SSHはパブリックネットワークでの利用に適しています。一方、セキュリティ上の懸念から、Telnetはプライベートネットワークに適しています。
SSHとSSL/TLS
SSHと同様に、トランスポート層セキュリティ(TLS)とセキュアソケットレイヤー(SSL)は、インターネット経由で送信されるデータを保護する2つの暗号プロトコルです。SSHと同じく、どちらもデータを暗号化し、接続を認証します。ただし、SSLには多数のセキュリティ脆弱性があり、非推奨となっています。現在は、セキュリティ機能が改善されたTLSがSSLの代替として広く使われています。
SSHとTLSには共通する機能もありますが、次の点で異なります。
| SSHプロトコル | TLSプロトコル | |
|---|---|---|
| 認証方式 | パスワードと公開鍵・秘密鍵 | デジタル署名 |
| デフォルトポート | ポート22 | ポート443 |
| プロトコルの種類 | リモートプロトコル | セキュリティプロトコル |
| 形式 | ネットワークトンネル | デジタル証明書 |
SSHの一般的なコマンド
sshコマンドは、リモートシステムに安全にログインするために使います。最も基本的なSSHコマンドはssh user@hostです。 ここで「user」はユーザー名/クライアント、「host」はリモートマシンのアドレスまたはサーバーを表します。
一般的なSSHコマンドには次のようなものがあります。
cdコマンド
cd(change directory)コマンドは、ディレクトリ間を移動するために使います。
cd [name of the directory]ディレクトリ構造が入れ子になっている場合、特定のディレクトリに移動するには、そのディレクトリのフルパスを指定する必要があります。例:
cd HomeDirectory/Level1Directory/Level2Directory上記のコマンドを実行すると、Level2Directoryに移動します。
mkdirコマンド
mkdir(make directory)コマンドは、ディレクトリを作成するために使います。mkdirコマンドの構文は次のとおりです。
mkdir [folder name]touchコマンド
touchコマンドは、新しいファイルを作成するために使います。touchコマンドの構文は次のとおりです。
touch [file name]rmコマンド
rm(remove)コマンドは、ファイルを削除するために使います。removeコマンドの構文は次のとおりです。
rm [file name]cpコマンド
cpコマンド(copy command)は、ファイルをコピーするために使います。copyコマンドの構文は次のとおりです。
cp [source file name] [destination file name]要点:SSH暗号化が企業ネットワーク上の通信を保護する
SSHは、情報を平文で転送していたrsh、Telnet、FTPなどの旧来のネットワークプロトコルに取って代わりました。 SSHを使えば、 デバイスとサーバー間のすべての通信が安全に暗号化されるため、安心して利用できます。したがって、SSHプロトコルの活用は、ネットワークの健全性を守る効果的な方法です。 特に、サイバーセキュリティの脅威が絶えない状況では、その重要性が増します。
慎重に分析して選定した最適な暗号化ソフトウェアを使って、転送中のデータのセキュリティを高め、重要な通信を保護します。