クラウドサーバーの利活用が当たり前になった現代のビジネスでは、リモートサーバーに対して安全に遠隔操作する手段が必須となりました。
またコロナ禍をきっかけに、様々な業種で安全なリモートワーク環境を整えるニーズが高まっています。
この記事では、安全にコンピューターやネットワーク機器を遠隔操作するための代表的なプロトコルであるSSHについて解説します。

小中規模プロジェクトを中心にSEやコンサルとして活動。クラウド導入やスタートアップ、新規事業開拓の支援も経験しました。
SSHとは?
Secure Shell(SSH)とは、リモートでコンピュータを操作する際に安全に通信するためのプロトコルです。
従来のシェル(Shell)プロトコルは、人間とコンピュータ間の通訳役を務めますが、ローカル環境での平文通信が前提でした。リモート環境では、平文通信では重要情報が盗聴される危険があります。
そこでSSHは、やり取りを暗号化することで安全な通信を実現します。つまり、SSHは「暗号化された安全なシェルプロトコル」なのです。
リモートアクセスが一般化した現代では、SSHによる安全な通信が不可欠となっています。
SSHと他のプロトコルとの違い
SSH(Secure Shell)は、リモートサーバーとの安全な通信を提供するプロトコルです。
SSL/TLS、FTP、Telnetなどの他のプロトコルも異なる用途や特徴を持ちます。
以下では、主な用途、セキュリティ、デフォルトポート、認証方式、主な機能の5つの観点から、SSHとこれらのプロトコルの違いを解説します。
プロトコル | 主な用途 | セキュリティ | デフォルトポート | 認証方式 | 主な機能 |
SSH | リモートアクセス、サーバ管理、トンネリング | 高い(暗号化通信) | 22 | 公開鍵認証、パスワード認証 | コマンド実行、ファイル転送(SCP/SFTP)、ポートフォワーディング |
Telnet | リモートアクセス | 低い(平文通信) | 23 | パスワード認証 | コマンド実行 |
FTP | ファイル転送 | 低い(平文通信、FTPSで暗号化可) | 21 | パスワード認証 | ファイルのアップロード/ダウンロード |
HTTP | ウェブページのデータ通信 | 低い(HTTPSで暗号化可) | 80 | 基本認証、トークン認証 | ウェブデータの送受信 |
主な用途
SSHは主に、リモートサーバーへの安全な接続や操作を目的として使用されます。
特にリモート管理や安全なファイル転送(SCPやSFTP)で多く利用されています。
SSL/TLSはウェブ通信やメール通信の暗号化に特化し、HTTPSなどの安全なデータ通信を実現します。
FTPはファイルの送受信に特化したプロトコルですが、暗号化されていません。単独ではセキュリティ面で課題があります。
Telnetはリモートホストへの接続に使用されますが、SSHと異なり、暗号化が行われないためセキュリティに問題があります。
セキュリティ
SSHは、強力な暗号化技術を用いて通信内容を保護し、公開鍵認証やパスワード認証によりセキュリティを高めています。
SSHは非常に安全であり、リモート管理やデータ転送で広く採用されています。
SSL/TLSも高度な暗号化を提供し、主にウェブやメールの通信の安全性を確保します。標準のFTPは通信内容が暗号化されないため、セキュリティが低いです(暗号化されたFTPであるFTPSやSFTPを使用すれば改善可能)。
Telnetは暗号化が一切行われないため、通信内容が盗聴されやすく、セキュリティが非常に低いと言えます。
デフォルトポート
各プロトコルには標準で使用されるポート番号があります。SSHはポート番号22を使用します。
SSL/TLSはHTTPS通信の場合、ポート番号443が使用されます。
FTPはポート番号21を使用し、Telnetはポート番号23が割り当てられています。
プロトコルごとに異なるポート番号を使用しており、これを基に通信を管理します。
認証方式
SSHは、パスワード認証や公開鍵認証を採用しており、特に公開鍵認証は高いセキュリティを提供します。
SSL/TLSは、サーバー証明書を使用して通信相手の正当性を確認します。場合によってはクライアント証明書を用いて双方向の認証も可能です。
FTPはユーザー名とパスワードで認証しますが、標準ではこれらの情報が暗号化されないため、第三者に盗聴されるリスクがあります。
Telnetも同様にユーザー名とパスワードを用いて認証しますが、暗号化が行われないため、セキュリティの懸念があります。
主な機能
SSHは、リモートサーバーの操作、安全なファイル転送(SCPやSFTP)、ポートフォワーディングなど、幅広い機能を提供します。
SSL/TLSは、データ通信の暗号化や改ざん検知、サーバー・クライアント間の認証を主な機能とします。
FTPはファイルのアップロードやダウンロード、ディレクトリ管理に特化していますが、標準のFTPにはセキュリティ機能がありません。
Telnetはリモートホストへの接続と操作を主な目的としており、SSHと機能が似ていますが、セキュリティが劣る点が大きな違いです。
SSH認証の仕組み
SSH認証はどのような仕組みになっているのでしょうか。ここでは、それぞれのステップごとに仕組みを解説します。
接続確立
SSHクライアントがサーバーに接続を試みると、まず通信の確立が行われます。
この段階で、クライアントとサーバー間でSSHプロトコルのバージョンや使用する暗号化アルゴリズムの交渉が行われ、通信が暗号化される準備が整います。
通信内容が第三者に傍受されるリスクが軽減されるのです。
サーバー認証
次に、サーバーが自分の公開鍵をクライアントに送信し、信頼性の確認が行われます。
クライアントは、この公開鍵を既知のホスト情報やフィンガープリント(鍵の要約情報)を使って検証します。
検証が成功すれば、サーバーが正当であるとみなされ、通信が続行されます。この手順は、中間者攻撃を防ぐために重要です。
ユーザー認証方式を選択
サーバー認証の後、サーバーはクライアントに利用可能な認証方式を提示します。代表的な方式には以下のようなものがあります。
- パスワード認証:ユーザーがサーバーにパスワードを送信して認証を行います。シンプルですが、パスワードの強度が重要です。
- 公開鍵認証:非対称鍵ペア(公開鍵と秘密鍵)を使用して認証します。クライアントはサーバーに公開鍵を登録しておき、接続時に秘密鍵を使って認証を行います。
- 証明書認証:X.509証明書を使用して認証します。大規模な環境で特に有効です。
クライアントは提示された中から適切な認証方式を選び、認証を試みます。
セッション確立
認証が成功すると、SSHセッションが正式に確立されます。この状態では、以下のような安全な操作が可能になります。
- リモートシェルでのコマンド実行
- ファイル転送(SCP/SFTP)
- ポートフォワーディング(トンネリング)によるセキュアな通信の中継
すべての通信は暗号化されているため、データの盗聴や改ざんが防がれます。
セッション終了
セッション終了は、クライアントが明示的に終了コマンドを送信するか、一定時間アクションがない場合に自動的に行われます。
このプロセスにより、セッションの安全な終了が保証されます。
セッション終了後、クライアントとサーバー間の通信は切断されます。
SSH認証方式の種類と比較
SSHがリモートコンピュータに安全に接続するためには、暗号化した通信を用いて「本人かどうか」を確認する必要があります。
SSHには従来のパスワードを使った本人認証方式と、公開鍵をつかった本人認証方式があります。
2つの認証方式について比較してみましょう。
認証方式 | 準備 | 盗聴のリスク | 認証の安全性 |
公開鍵認証 | 鍵の生成と保管が必要 | 秘密鍵はサーバーに送らないため、リスクは低い | 秘密鍵の推測は困難なため、安全性が高い |
パスワード認証 | パスワードを決めるだけで特別な操作は不要 | パスワードを直接サーバーに知らせるため、盗聴リスクがある | 簡単なパスワードは推測されやすい |
公開鍵認証は準備に手間がかかる分安全性が高いです。
パスワード認証はセキュリティリスクは高いですが、簡単に導入・運用できます。
まずは、2つの主要な認証方式について概要を説明します。
公開鍵認証方式
公開鍵認証とは、素因数分解の困難性というNP問題を利用して非対称暗号化するRSA暗号方式を応用した認証方法です。
これだと難しいため、公開鍵認証の仕組みを南京錠を例に説明します。
この認証方式では、「開けることだけできる鍵」(秘密鍵)と「閉めることだけができる鍵」(公開鍵)のペアを使用します。秘密鍵は自分だけが持ち、公開鍵はサーバーに保管します。
認証時は「秘密鍵で閉めた南京錠は、公開鍵でしか開けられない」という性質を利用します。つまり「ぐちゃぐちゃにした南京錠を送り、それを公開鍵で直せたら本人と認める」という仕組みです。
SSHサーバーでは、ユーザーの公開鍵を保管し、「どの公開鍵で南京錠が戻せたか」で本人確認を行います。パスワード不要でセキュリティが高い方式ですが、利用時は秘密鍵が必要です。
パスワード認証方式
よくある、事前に決めた「ユーザー名とパスワードの組み合わせ」をSSHサーバーに登録しておき、認証の際にユーザー名とパスワードを打ち込む認証方式です。
パスワードは秘密情報であり、正確なユーザー名とパスワードの組み合わせを知っている人間を本人とみなします。
総当たりや推測でパスワードが漏れてしまうことや、安全なパスワードを作ると長すぎて覚えられないという問題があり、公開鍵に比べてセキュリティは低いです。
しかしユーザー名とパスワードさえ知っていれば端末を問わずにSSHが使えるという利点もあり、使い所を誤らなければ便利な認証方式と言えるでしょう。
SSHを使うメリット
インターネット越しに安全に遠隔のコンピュータを動かせるSSHは非常に便利なツールです。
SSHのメリットについて、安全性と遠隔操作の2つの側面から今一度解説します。
セキュアな通信ができる
SSHの最も大きな利点は、遠隔地のサーバーやPCを安全に操作できることです。
インターネット越しの操作は常に悪意のある誰かに見られてしまう危険性があります。
悪意を持った第三者が、サーバーを悪用したり情報を漏洩させないように気を配る必要があります。
SSHを使うことで、なりすましの防止と盗聴の防止を実現できます。
安全に情報がやり取りできる土壌が整うことで、個人情報や機密情報を安心して通信することが可能です。
セキュアな遠隔操作が担保されることで、リモートでの業務を安心し行なうことができ、在宅勤務やテレワーク、VPNの利用を促進することができます。
サーバー上でのファイル編集ができる
SSHクライアント越しに、遠隔地のサーバーやPCとファイルを直接やり取りできる利便性もSSHの魅力です。
Telnetなどの古いシステムであれば時間がかかっていたファイルのダウンロードやアップロードの手間も必要ありません。
ファイルを直接閲覧できるだけなく、編集やコピー、削除といった様々なファイル操作を「まるで直にPCを使っているように」直接操作することができます。
また、SSHクライアントによっては、ファイルの一括圧縮・ダウンロードや、よく行うファイル操作の自動実行などの便利機能を備えています。
業務で頻発する「ファイルの操作」のストレスがなくなることで、よりリモートワークが楽になるでしょう。
コストを削減できる
SSHを活用することで、物理的な移動や専用機器の設置といったコストを大幅に削減できます。
リモートサーバーへのアクセスを安全に確保できるため、IT管理者が物理的に現場へ赴く必要が減り、運用効率が向上します。
無料で利用可能なオープンソースのSSHクライアントやサーバーが多く存在するため、ライセンス費用を抑えることも可能です。
シンプルな接続プロセスにより、複雑なネットワーク機器を使用せずに運用できる点もコスト削減に寄与します。
連携や自動化などがしやすくなる
SSHはスクリプトやツールとの相性が良く、リモート操作やタスクの自動化に最適な環境を提供します。
たとえば、スクリプトを使用して複数のサーバーに一括でコマンドを実行したり、定期的なバックアップを自動化することが容易です。
SSHのポートフォワーディング機能を利用することで、安全にAPIやデータベースとの接続を行えるため、開発環境や本番環境との連携がスムーズになります。
この柔軟性により、日々の運用作業が効率化されるだけでなく、エラーを減らし、業務の安定性を高めることができます。
SSHを導入する際の注意点
SSHを導入する際は必要な注意点があります。ここでは、注意すべきポイントをみていきましょう。
セキュリティを設定する
SSHを導入する際には、セキュリティを最優先に設定する必要があります。デフォルト設定のままでは攻撃にさらされやすく、特に22番ポートを使用する場合、スキャン攻撃の対象になることが多いです。以下の対策がおすすめです、
- 使用するポートを変更する(例:2222などのカスタムポート)。
- 強力なパスワードポリシーを適用する。
- 未使用の認証方式(パスワード認証など)を無効化し、公開鍵認証に統一する。
適切なアクセス制御を行う
アクセス制御を適切に行うことで、不正アクセスのリスクを低減できます。
SSHでは、接続可能なIPアドレスを制限することでセキュリティを強化できます。
たとえば、ファイアウォールやホストベースのアクセス制御(/etc/hosts.allowや/etc/hosts.deny)を使用して、特定のネットワークやデバイスからのみ接続を許可する設定を行います。
また、アクセス権限を必要最低限に絞る「最小権限の原則」を適用し、管理者以外の不要なユーザーへのアクセスを防止します。
鍵を管理する
公開鍵認証を使用する場合、鍵の管理が非常に重要です。秘密鍵が漏洩するとシステム全体が危険にさらされるため、以下の対策が必要です。
- 鍵ペアを安全に保存し、適切なパーミッション(例:秘密鍵は600)を設定する。
- 必要に応じてパスフレーズを設定する。
- 使用していない公開鍵を速やかに削除する。
- 定期的に鍵ペアを更新することで、セキュリティを維持する。
監視しログを記録する
SSHの利用状況を定期的に監視し、ログを記録することも重要です。ログは不正アクセスの兆候を検知するための有力な情報源です。以下の設定がおすすめです。
- /var/log/auth.logや/var/log/secure(環境による)を定期的に確認する。
- ログイン試行回数や失敗回数の制限を設定する(例:Fail2Banの導入)。
- 監視ツールを使用して、異常な接続やログインのパターンをリアルタイムで検知する。
運用管理を行う
SSHの運用管理には、継続的なメンテナンスとポリシーの適用が必要です。以下のポイントに注意しましょう。
- SSHソフトウェアを最新バージョンに保つことで、脆弱性を解消する。
- アクセスログを解析し、問題があれば速やかに対応する。
- ユーザー権限や鍵の定期的な見直しを行い、不適切な設定を排除する。
- 運用プロセスを文書化し、トラブル時の対応手順を明確にしておく。
SSHの実践的な活用例
SSH(Secure Shell)はセキュアなネットワーク通信を提供するプロトコルであり、ビジネスのさまざまな面で利用されています。
このプロトコルは主にリモートデバイスの管理、ネットワーク管理、開発とテストのプロセス、そしてポートフォワーディングに有効です。
それぞれのシナリオにおいてSSHは効率的かつセキュアな操作を可能にし、リモートでの作業を格段に向上させます。
サーバー管理
サーバー管理においてSSHは不可欠です。
システムエンジニアや管理者はSSHを使用して、世界中どこからでもサーバーにリモートアクセスし、トラブルシューティング、ソフトウェア更新、システムモニタリングなどを行います。
このプロセスでは、公開鍵認証を通じてセキュアな接続を確立し、不正アクセスやデータ漏洩のリスクを最小限に抑えます。
ネットワーク管理
ネットワーク管理では、SSHを利用してリモートデバイスの設定変更やネットワーク設定の更新を行うことができます。
特に、分散配置されたネットワーク機器への安全なアクセスが求められる場合、SSHは信頼性の高い選択肢となります。
また、ネットワークの安全性を確保しつつ、効率的に管理作業を行うための重要なツールです。
開発・テスト
開発者はSSHを使用してローカルマシンからクラウド環境や他の開発環境に安全に接続し、コードのデプロイやデバッグを行います。
SSHは開発中のアプリケーションへの安全なアクセスを保証し、リアルタイムでのテストとフィードバックを可能にするため、開発プロセスの効率を大幅に向上させます。
ポートフォワーディング
SSHポートフォワーディングは、特にセキュリティが重視される環境で有効です。
この技術を使用することで、ローカルマシンからリモートサーバーの特定のポートへ安全にトンネル接続を行い、内部ネットワークには露出していないサービスへのアクセスを可能にします。
例えば、社内にあるデータベースへの安全なアクセスや、プライベートAPIへの接続がこれに該当します。
【Windows向け】おすすめSSHクライアント4選
Windowsは標準ではSSHクライアントがインストールされていません。(PowerShellにOpenSSHをインストールすることはできます)
Windowsで使われているSSHクライアントをいくつか紹介します。
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
OpenSSH | オープンソース
BSDライセンス |
CUI専用 | SSHクライアントの代表的存在で、PowerShellにもインストールできる。 | 無料 |
PuTTY | オープンソース
MITライセンス |
GUI対応 | GUIベースのWindows用SSHクライアントとして最も知られたソフト | 無料 |
Tera Term | オープンソース
修正BSDライセンス |
GUI対応 | マクロ機能に強みを持つSSHクライアント
日本語マニュアルが充実 |
無料 |
XSHELL 7 | 有償ライセンス | GUI対応 | 使いやすさに重点をおいた有償のSSHクライアント | 年額99ドル※ |
※非商用、教育用の無料プランあり
OpenSSH
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
OpenSSH | オープンソース
BSDライセンス |
CUI専用 | SSHクライアントの代表的存在で、PowerShellにもインストールできる。 | 無料 |
OpenSSHは、Windows 10以降のOSに標準搭載されているSSHクライアントです。
追加のインストール作業が不要で、コマンドラインから手軽に利用できます。
セキュリティ機能が豊富で、公開鍵認証やポートフォワーディングにも対応しており、初心者から上級者まで幅広く利用されています。
標準機能であるため、Windows環境での簡単なリモートアクセスに最適です。
PuTTY
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
PuTTY | オープンソース
MITライセンス |
GUI対応 | GUIベースのWindows用SSHクライアントとして最も知られたソフト | 無料 |
PuTTYは、軽量かつ強力なSSHクライアントで、Windowsで広く使われています。
シンプルなインターフェースで、設定もわかりやすく、初心者におすすめです。
また、セッションの保存やRSAキー生成ツール(PuTTYgen)の提供など、細かいカスタマイズが可能です。ポータブル版もあり、USBドライブで持ち運びができるのも魅力です。
Tera Term
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
Tera Term | オープンソース
修正BSDライセンス |
GUI対応 | マクロ機能に強みを持つSSHクライアント | 無料 |
Tera Termは、日本発の多機能ターミナルエミュレーターで、SSHやTelnet、シリアル通信など幅広いプロトコルに対応しています。
マクロ機能が充実しており、自動化タスクやスクリプト作成が容易です。
日本語サポートも充実しているため、日本のユーザーにとって非常に使いやすいツールと言えます。
XSHELL 7
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
XSHELL 7 | 有償ライセンス | GUI対応 | 使いやすさに重点をおいた有償のSSHクライアント | 年額99ドル ※非商用、教育用の無料プランあり |
XSHELL 7は、企業向け機能を備えた高性能なSSHクライアントです。
タブ型インターフェースにより、複数のセッションを効率的に管理できます。パスワード管理やセッション共有など、ビジネス環境で役立つ機能が充実しています。
個人利用に限り無料で使えるため、プロフェッショナルから初心者まで幅広く利用されています。
【Mac向け】おすすめSSHクライアント4選
MacのTerminalにはデフォルトでSSHクライアントが付属します。
ですが特別な機能を求める場合は、外部クライアントを頼る選択肢もあります。
Macで使われているSSHクライアントを紹介します。
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
Terminal | Macの利用規約の準拠 | 標準ではCUI専用
X WindowなどでGUIに対応可能 |
Macに標準で搭載されているSSHクライアント | 無料 |
iTerm2 | オープンソース
GPL-2.0 |
CUI専用 | 標準Terminalと比べて機能が豊富 | 無料 |
Termius | 有償ライセンス | GUI対応 | DevOpsやエンジニアの作業効率化を重視した機能が搭載され、スマホアプリにも対応 | 要見積もり※ |
ZOC Terminal | 有償ライセンス | GUI対応 | マクロやスクリプト言語を使用したカスタマイズに対応 | 要見積もり※ |
※機能制限されたトライアル版あり
Terminal
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
Terminal | Macの利用規約の準拠 | 標準ではCUI専用
X WindowなどでGUIに対応可能 |
Macに標準で搭載されているSSHクライアント | 無料 |
Terminalは、MacOSに標準搭載されているSSHクライアントで、追加のソフトウェアをインストールする必要がありません。
コマンドラインベースで操作が可能で、簡潔なインターフェースながらも高い柔軟性を持っています。
シェルスクリプトを活用することで、タスクの自動化や効率化も実現できます。Mac初心者にも使いやすいのが特徴です。
iTerm2
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
iTerm2 | オープンソース
GPL-2.0 |
CUI専用 | 標準のTerminalと比べて機能が豊富 | 無料 |
iTerm2は、Mac用のターミナルアプリケーションで、Terminalの拡張版とも言えるツールです。
タブ機能やスプリットウィンドウ、ペースト履歴など、開発者に便利な機能が豊富に揃っています。キーボードショートカットのカスタマイズが可能で、作業効率を大幅に向上させることができます。
視覚的なカスタマイズが可能なのも魅力です。
Termius
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
Termius | 有償ライセンス | GUI対応 | DevOpsやエンジニアの作業効率化を重視した機能を搭載され、スマホアプリにも対応 | 要見積もり ※機能制限されたトライアル版あり |
Termiusは、SSHクライアントとしてだけでなく、サーバー管理ツールとしても使える多機能なアプリケーションです。
セッションの同期機能により、異なるデバイス間で設定を共有できるため、モバイルやデスクトップで一貫した環境を構築できます。
無料版でも十分な機能を利用できますが、プレミアム版ではさらに高度なセキュリティ機能やチーム共有機能が提供されます。
ZOC Terminal
クライアント名 | ライセンス | インタフェース | 特徴 | 価格 |
ZOC Terminal | 有償ライセンス | GUI対応 | マクロやスクリプト言語を使用したカスタマイズに対応 | 要見積もり ※機能制限されたトライアル版あり |
ZOC Terminalは、プロフェッショナル向けのターミナルエミュレーターで、SSHやTelnet、シリアル通信に対応しています。
高いカスタマイズ性とスクリプト機能を持ち、大規模なネットワーク管理や開発環境で特に重宝されます。
安定性と信頼性が求められる場面に適しており、企業のIT部門でも広く使用されています。
まとめ:SSLとは安全にリモートアクセスできるツール
昨今の様々な業種でリモートワークシステムやクラウドサーバーを使った業務が当たり前になってきました。
リモートで業務をする上で、SSHは絶対に導入するべきツールです。安全な通信と快適なファイル操作ができる作業環境は、どんな仕事であっても必要になります。
ですが、SSHには「公開鍵認証」や「暗号化」といった専門的な知識が関わってくることもお伝えしました。
また、クライアントにも様々な種類があり、「どんなクライアントでどのように運用すべきかわからない」と悩む企業様も多いかと思います。
私達とともにその課題を解決しませんか。株式会社Jiteraは、様々なITシステムの導入に悩む企業様へのサポートを行っております。
SSHの利用方法をご検討の際は、ぜひ株式会社Jiteraにお問い合わせください。