\r\n\r\n
secureshell (SSH)は、安全でないネットワーク上で安全な通信をサポートする暗号化されたネットワークプロトコルです。このプロトコルは、古い安全でないプロトコルを置き換え、すべてのオペレーティングシステムのセキュリティとプライバシーを向上させるために開発されました。
では、SSHとは何でしょうか?
SSHはSecure Shellの略で、Secure Socket Shellとも呼ばれる。
SSHは、安全なネットワーク通信プロトコルです。このプロトコルは、主にネットワーク管理者が遠隔地の機器に安全に接続するために使用されますが、SSHには一般的な機能が一通り備わっています。
SSHが開発される以前は、ユーザーや管理者はTelnetなどの安全でないネットワークプロトコルを使って遠隔地の機器と通信していました。現在では廃止されているこれらのプロトコルは、パスワードやログイン情報などの重要な情報を平文で送信していたため、攻撃者の格好の標的になっていました。
SSHは通常22番ポートで通信を行います。
SSHには「2つの」バージョンがあります。2つ」というのは、この2つのバージョンの間に、SSH1からSSH2への実装やアップデートが多数存在するからです。
ご想像の通り、SSH2 の方がより安全なプロトコルです。攻撃者や盗聴者に対する保護が強化され、より強力な暗号化アルゴリズムをサポートし、オリジナルのSSHプロトコルに多くの一般的な改良が加えられています。
OpenSSH は広く使われているオープンソースの SSH 実装です。SSH のオリジナルのフリーバージョンは tatuylönen によって開発されましたが、ylönen の作品のより高いバージョンは独占的で、つまりライセンスや使用にお金がかかり、あなたはプロトコルに許可なく変更することができません。
その結果、開発者のグループは、オリジナルのフリー版SSHをOpenSSHと名付け、現在ではオープンソースのオペレーティングシステムであるOpenBSDの一部として開発されています。Windows、macOS、多数のLinuxディストリビューションなど、主要なOSはすべてOpenSSHをサポートしています。
SSHの仕組みを理解するためには、2つのことを知る必要があります。
まず、シェルとは何でしょうか?次に、公開鍵パスワードはどのような仕組みになっているのでしょうか。SSH接続の詳細を考える前に、シェルが実際に何であるかを把握しましょう。
シェルは、それをホストするオペレーティングシステムと通信するためのソフトウェアの一部です。通常、シェルとの対話にはコマンドを使用しますが、グラフィカル・ユーザー・インターフェース(gui)も存在します。
SSHを使えば、ネットワーク経由でリモートからシェルを操作することができます。
現代のコンピュータでは、暗号化には大きく分けて2つの種類があります。
関連:誰もが知っておくべき暗号の基本用語とその理解
SSHは、この2つの暗号を利用した公開鍵暗号方式で、安全な接続を実現します。
SSHは、この2つの暗号化方式を使い、クライアント・サーバーモデルで安全な接続を実現します。クライアントがサーバーとの接続を試みるとき、各当事者はその暗号化プロトコルを通信する。
一致する暗号化プロトコルが決定された後、クライアントとサーバーはDiffie-Hellman鍵交換アルゴリズムを使用して、対称型アルゴリズムの一部として共有暗号鍵を取得します。この暗号鍵は、接続中も機密を保持し、両者間のすべての通信を暗号化するために使用されます。
では、非対称暗号化機能はどこにあるのでしょうか?
公開鍵暗号方式では、公開鍵と秘密鍵の2つの鍵が存在します。公開鍵は他の人に送ることができ、所有者は秘密鍵だけを知っています。2人で1組を形成する。
SSHは、対称型鍵交換と安全な通信路の確立の前に、非対称型暗号化を使って一時的な鍵ペアを作成します。クライアントとサーバーは、共通鍵の生成プロセスを開始する前に公開鍵を交換し、お互いを確認します。
SSHは対称型暗号を使用して接続を保護するため、AES、Blowfish、Twofish、Salsa20/ChaCha20、3DES、IDEAなど様々な対称型暗号化アルゴリズムを使用するように設定することが可能です。
関連:よくある暗号化の種類と自分で暗号化してはいけない理由
SSHもSSL/TLSも、以前は安全でなかったネットワークプロトコルにセキュリティを提供するものですが、SSHとSSL/TLSは同じものではありません。
SSL(Secure Sockets Layer)とその後継のTLS(Transport Layer Security)は、通信のための暗号化トンネルを提供します。SSLとTLSは、アプリケーション層のプロトコルであり、メール送信やウェブ閲覧の際に毎日使用されています。インターネット通信ネットワークでは、アプリケーション層はエンドユーザー向けに標準化された通信を提供します。
SSL/TLSとSSHはどちらも暗号化を提供しますが、ネットワークプロトコル自体は異なる目的で設計されています。 SSL/TLSはデータ接続を保護するために設計されており、SSHは安全なリモートアクセスやコマンド実行を可能にするために設計されています。
ただし、SSHとSSLを併用することで、SSH File Transfer Protocol(SFTP)やSecure Copy Protocol(SCP)を使ってファイルを転送することができます。ちなみに、SCPを使うのは、PCからRaspberry Piにデータをコピーする方法のひとつに過ぎません。
上記の問題のように、VPN(Virtual Private Network)は、通信のための暗号化されたトンネルを提供します。しかし、SSHがクライアント・サーバー構成で特定のコンピューターとの安全な接続を提供するのに対し、VPNはあなたのコンピューターとVPNサーバーとの間の安全な接続を提供するものです。
VPNサーバー上でリモートコマンドを実行しているわけではありません。具体的には、VPNをオンにすると、データはVPNサーバーを経由して暗号化されたトンネルを通り、より広いインターネットに「再接続」される前に、コンピュータとの間で転送されるようになります。
このように、SSHはリモートコマンドを実行するためのコンピュータへの安全な接続をサポートし、VPNはコンピュータとVPNサーバー間の暗号化されたトンネルをサポートします。
このプロセスにより、インターネット接続を使用する際に、コンピュータの場所を隠し、セキュリティを強化することができる場合があります。もっと知りたいですか?ここでは、VPNがどのようにあなたのプライバシーを保護するのかを説明します。
お使いのOSにSSHクライアントがあるか、SSH機能が統合されていれば、安全なネットワークプロトコルを使用することができます。
例えば、LinuxでSSHを使うためのビギナーズガイドや、windows10でSSHを使うための簡単な方法をご覧ください。
Secure Shell はどこにも行きません。 SSH は安全で簡単に使えるネットワークプロトコルで、どんなユーザでも **** することができます。あらゆるプラットフォームで動作し、全世界で利用可能です。SSHに関するこの短いガイドを読んで、今後SSHを使用するための準備が整いました。