SSH とは何ですか? どのように機能しますか?
公開: 2021-08-15SSH は、ネットワーク内のリモート コンピュータにアクセスするための安全なネットワーク プロトコルです。
コンピュータはネットワークを介して互いに通信します。 したがって、ネットワーク研究者は、他のマシンと通信するための一連のルールを定義し、Telnet などのプロトコルの開発を開始しました。 これを使用すると、あるユーザーが別のコンピューターを制御できます。
しかし、それらは安全ではありません。つまり、ネットワークの真ん中にいる人なら誰でも、転送中のデータを傍受して読み取ることができます。 90 年代半ばに、 sshという名前のより安全なプロトコルが、信頼できる telnet プロトコルの後継として導入されました。
あなたが業界で働くソフトウェア開発者またはシステム管理者であれば、少なくとも 1 回は ssh を使用したことがあるでしょう。 覚えていない人は、知っておくべき必須スキルの 1 つですので、今すぐ学びましょう。
SSHとは?
SSHまたはSecure ShellまたはSecure Socket Shellは、リモート マシン (ほとんどの場合リモート サーバー) に安全にアクセスして通信するのに役立つネットワーク プロトコルです。
強力な暗号化を提供し、ネットワーク管理者や開発者がリモート システムとアプリケーションの管理、コマンドの実行、ファイルの共有などに広く使用しています。
SSHの必要性
SSH は、rlogin、rsh、Telnet などのセキュリティ保護されていないリモート アクセス プロトコルが直面するセキュリティ問題を解決するために、1995 年に作成されました。
では、1969 年に開発されたTeletype Networkの略である Telnet について話しましょう。これは、コンピューター上で実行され、リモート サーバー (世界中のどこにでもある) にアクセスするための単純なコマンド ライン ツールです。 そして、あたかもリモート サーバーのすぐ前に座っているかのように (サーバーから何マイルも離れていても)、そのサーバーで実行されるコマンドを送信します。 Telnet は、ネットワーク上でメッセージをプレーン テキストで送受信します。
実行するコマンドは、プログラムの実行、ディレクトリの作成、ファイルの作成/削除/転送、サービスの開始/停止などです。
ネットワークに別のマシンを接続する際の問題は、送信されるデータが多くのネットワークを通過することです。 それまでの間、それらの一部は安全ではない可能性があり、送信データが傍受され、意図したターゲット マシンに到達する前に変更される可能性があります。
セキュリティがそれほど重要ではなかった初期の頃は、すべての通信はプレーン テキストで行われていました。 したがって、クライアントとサーバーの間でインターネットを介して送信されるデータは、簡単に傍受される可能性があります。 また、メッセージは暗号化されていないため、読み取ることができます。
したがって、プレーンテキスト プロトコルは非常に安全性が低く、パスワードやシークレットなどの機密データの送信には使用できません。したがって、SSH は従来のリモート アクセス ネットワーク プロトコルの安全な代替手段と見なされています。
それはどのように機能しますか?
SSH は、ssh クライアントを ssh サーバーに接続することにより、ネットワークを介した安全な通信のためにクライアント サーバー アーキテクチャを使用します。 デフォルトでは、ssh サーバーは標準の TCP ポート 22 をリッスンします (セキュリティを強化するためにこれを変更できます)。
クライアントとサーバー間の認証に公開鍵暗号技術を使用します。 さらに、このプロトコルは、クライアントとサーバー間のメッセージ交換に強力な対称暗号化とハッシュ アルゴリズムを使用して、プライバシーとデータの整合性を確保します。
Linux は、そのセキュリティと耐久性から、リモート サーバー用に広く使用されているオペレーティング システムです。 インターネット上で Linux オペレーティング システムを使用する多くのサーバーは、何年もの間、多くの障害や再起動なしで実行されています。
ほとんどの SSH セッション (リモート サーバーにアクセスする期間) には、次の 2 つの操作しかありません。

- 認証
- コマンド実行
SSH サーバーは、さまざまな方法を使用してクライアントを認証できます。
そして、2つの一般的な方法は次のとおりです。
- パスワードベース
- キーベース
パスワードベースの認証は、OpenSSH がインストールされたクライアントの認証に使用されるデフォルトの方法です。 これは最も基本的な ssh 認証ですが、最も安全な認証ではありません。
パスワードはサーバーに安全に送信されますが、最近のブルート フォース攻撃は認証をバイパスする可能性があります。
キーベースの認証は、信頼性が高く安全な代替手段であることが証明されている SSH キー ペアを生成することにより、システム セキュリティをさらに向上させます。
サーバーがクライアントを正常に認証すると、それらの間に安全な接続が確立されます。
SSH を使用したリモート サーバーへのアクセス
Mac/Linux ユーザーの場合、デフォルトで OpenSSH がインストールされているため、端末を直接使用して ssh コマンドを入力して実行できます。
Windows ユーザーの場合、ssh コマンドを実行するには、サードパーティのターミナル エミュレータ クライアントを 1 つインストールする必要があります。 PuTTY は、Windows オペレーティング システム用の最も一般的な ssh クライアントです。
SSH を使用してリモート サーバーに接続するには、少なくとも 2 つのことを知っておく必要があります。
- サーバーホスト
- ユーザー名
基本的な ssh コマンドの構文は次のとおりです。
$ ssh <user-name> @ <host> -p <port-no>
user-nameは接続しようとしているリモート マシンのユーザー名であり (ローカル マシンのユーザーではありません)、 hostは IP アドレスまたはドメイン名です。
OverTheWire Web サイトを使用してリモート サーバーに接続する例を見てみましょう。 無料のウォーゲーム チャレンジ Web サイトです。
では、ssh を使用してバンディット チャレンジに接続してみましょう。 これは、SSH を使用してログインする方法を教える Web サイトで利用可能な課題の 1 つです。
資格:
ユーザー名とパスワード: bandit0
ホストとポート: bandit.labs.overthewire.org 、2220
次のコマンドを入力して Enter キーを押すと、次のようになります。
$ ssh [email protected] -p 2220
認証用のパスワードを求めるプロンプトが表示されます。 パスワードを入力してEnterキーを押します。
入力したパスワードが正しい場合、リモート サーバーへのログインに成功し、端末は上の画像のようになります。
これで、リモート マシンのターミナルを使用して、コマンドを入力して実行し、必要な操作を実行できます。
ssh セッションを終了するには、 exitコマンドを入力します。
$ exit
ssh セッションから正常にログアウトすると、 「接続が閉じられました」というメッセージが表示されます。
結論
SSH の人気の背後にある主な理由は、サーバーとクライアント間の通信全体が暗号化されていることです。
ほとんどの人は、ssh の使用は複雑であり、そのしくみを理解するのは容易ではないと考えていますが、思ったより簡単です。 これで、SSH の基本的な仕組み、その仕組み、その背後にあるセキュリティの側面、および SSH が通信において重要な役割を果たす理由を理解できました。
次に、いくつかのリソースを探索して、Sysadmin になりましょう。