1. 概要

ますます機密情報がインターネットを介して送信されるにつれて、サーバー間の安全で暗号化された接続の必要性が高まります。

このチュートリアルでは、サーバー間で安全な暗号化された通信を提供するプロトコルとツールのセットであるsshについて学習します。

ここに示すすべてのコマンドをBashを使用してテストしたことに注意してください。 ただし、POSIX準拠の端末で動作する必要があります。

2. 構成

ほとんどすべてのUnixベースおよびLinuxベースのオペレーティングシステム(macOSを含む)は、事前構成されたsshプログラムを提供します。 Windowsオペレーティングシステムでは、PuTTYgit-bashforWindowsなどを使用してsshをインストールできます。

sshの良いところは、トラフィックを暗号化するために他に何もする必要がないことです。 デフォルトでは、sshは Diffie-Hellman鍵交換を使用して暗号化鍵をネゴシエートおよび交換し、その後暗号化アルゴリズムを選択します。

したがって、マシンに ssh がインストールされたら、接続を開始できます。

3. リモートホストへのアクセス

sshの一般的な使用法は、リモートサーバーへの接続です。たとえば、次のコマンドを実行すると、ホスト remote-server.comに接続します:

ssh [email protected]

リモートホストでパスワードを入力すると、そのリモートホストは、ローカルホストでシェルを使用しているかのようにコマンドを実行できるターミナルを提供します。

また、トップレベルドメイン、IPアドレス、またはホストエイリアスを使用してリモートシステムを参照できることにも注意してください。

4. ポートフォワーディング

sshの非常に便利な機能は、ポート転送です。 これにより、ローカルポートに接続し、その接続をリモートシステムからアクセス可能な他のシステムに送信することができます。 。 これは、最初に接続したシステム、またはそのリモートネットワーク上の他のシステムである可能性があります。

接続されたシステムのポートにアクセスするには、次を使用します。

ssh -L 8888:localhost:8080 [email protected] 

この例では、 localhost:8080はリモートシステムremote-server.comを基準にしています。 リモートシステムremote-server.comで使用可能な別のシステムのポートにアクセスするには、次を使用します。

ssh -L 8888:another-remote-server.com:8080 [email protected] 

ここで、ポート8888へのローカル接続は、セキュリティで保護されたチャネルを介して、remote-server.comで使用可能なanother-remote-server.comシステムの8080ポートに送信されます。そのネットワーク上のシステム。

コマンドラインで-Rを使用して、リモートシステムがローカルネットワーク上のポートおよびシステムにアクセスできるように、逆ポート転送を実行することもできます。

ここでも、ポート転送時に remote-server.com で定義されたトップレベルドメイン、IPアドレス、またはホストエイリアスを持つリモートシステムまたはローカルシステムを参照できます。

5. リモートコマンド

シェルが不要で、単一のコマンドを実行したい場合は、リモートシステムでそのコマンドへのパスを指定するだけです。

ssh [email protected] /usr/local/bin/some-command

これにより、非対話型セッションでremote-server.com/usr / local / bin / some-command が実行され、ローカル端末にstderrまたはstdoutメッセージが表示されて終了します。コマンドの実行が完了したときの接続。

6. X11

UnixベースおよびLinuxベースのシステム上の多くのプログラムは、Xウィンドウシステムに基づくGUIを使用します。

ローカルシステムのインターフェイスを表示するためにリモートシステムで起動する場合は、-Xを使用します。

ssh -X [email protected]

7. ファイルのコピー

ローカルからリモートへの接続に加えて、暗号化されたチャネルを使用してファイルをコピーできます。

この機能を提供するプログラムがいくつかあります。

1つ目はsftpで、これはftpコマンドの安全なバージョンです。 これを使用するには、 sftp コマンドを使用して接続し、ftpのように使用します。

sftp [email protected]

使用できるもう1つのプログラムは、 scp、です。これは、ローカルホストからリモートサーバーへの安全なコピーを提供します。

scp ./my-local-file.txt [email protected]

scp を使用して、リモートサーバーからローカルホストにファイルをコピーすることもできます。

scp [email protected]:my-remote-file.txt ./my-local-copy-of-my-remote-file.txt

最後に、scpftpによく似たrsyncコマンドは、ローカルホストからリモートサーバーにファイルをコピーできます。

rsync ./my-local-file.txt [email protected]:/

また、リモートサーバーからローカルホストにファイルをコピーすることもできます。

rsync [email protected]:/my-remote-file.txt ./my-local-copy-of-my-remote-file.txt

一般に、rsyncsftpおよびscpよりも高速です。

ssh以前は、ファイル転送プロトコル(FTP)は、あるシステムから別のシステムにファイルを転送するために使用される標準プロトコルでした。 ただし、FTPはプレーンテキストでデータを転送するため、非常に安全ではないため、避ける必要があります。

8. 結論

この記事では、sshがさまざまな状況で安全な通信を提供する方法について説明しました。