GNU/Linux >> Linux の 問題 >  >> Linux

Linuxでのログインにセキュアシェル(SSH)を使用し、データ転送にセキュアコピー(SCP)を使用する

SSHはセキュアシェルの略です。これは暗号化されたリモートログインプロトコルです。各ノードに設定すると、そのネットワーク内の他のさまざまなノードと通信するために使用できます。

SSHの主な利点は次のとおりです。

  • SSHはRSA暗号化アルゴリズムを使用して公開鍵と秘密鍵を生成するため、侵入が非常に困難になります。
  • SSHはリモートログインプロトコルであるため、ラップトップで構成できます。つまり、ラップトップを使用してRaspberryPiクラスターにワイヤレスで接続できます。
  • SCP(セキュアコピー)やSFTP(セキュアファイル転送プロトコル)などのプロトコルはSSH上で実行されるため、これらを使用して、あるノードから別のノードにファイルやフォルダを直接転送できます。
  • SSHは1回限りのログインをサポートしています。つまり、最初にログインするときに資格情報を入力するだけで済みます。2回目以降のログイン以降は必要ありません。

まず、SSHキーの生成から始めましょう。 SSHを使用するには、データ転送を実行できるように、2つ以上のノード間でキーを生成する必要があります。暗号化にはRSAを使用します。 1つのノードでキーを生成し、秘密キーまたは秘密キーを使用することに注意してください。同じノードは、このノードにデータを送信したい他のノードに送信される公開鍵も生成します。データの送信元のノードで次のコマンドを実行します。このノードを「マスターノード」と呼び、他のノードを「ワーカーノード」と呼んでいます。

cd ~
ssh-keygen --t rsa --C "[email protected]"

これらの2つのコマンドは、キーを保存するためのデフォルトの場所/ home / pi / _ssh/id_rsaを設定します。

パスフレーズを求められた場合は、パスフレーズを空白のままにします。これが完了したら、次のステップは公開鍵をワーカーノードに送信することです。したがって、ワーカーノードがネットワークに接続されていることを確認してください。これで、ワーカーノードに暗号化キーを設定できるようになりました。使用されるIPアドレスは、ワーカーノードのIPアドレスです。マスターノードで次のコマンドを実行します。

cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir .ssh;cat >> .ssh/authorized_keys"

SSHキーが生成されると、マスターノードからキーが送信された他のノードにログインできます。ログインするには、次のコマンドを使用します。

ssh [email protected]

上記のコマンドで「pi」はユーザーを示します。デフォルトでは、Raspbianを使用するすべてのPIはユーザーを「pi」とし、「192.168.3.216」はクライアントのIPです。クライアントPIのIPアドレスを表すように変更する必要があります。

これにより、パスワードが要求されます。ログインすると、入力したすべてのコマンドはマスターではなくそのノードで実行されますが、出力はマスター自体に表示されます。 SSHを使用して、他のノードで直接コマンドを実行することもできます。たとえば、さまざまなノードのホスト名を変更するには、次の形式でこのコマンドを使用します。

ssh [email protected] 'sudo echo "cilent001" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent002" | sudo nano /etc/hostname'
ssh [email protected] 'sudo echo "cilent003" | sudo nano /etc/hostname'

上に示したように、SSHを使用して、実際にログインしなくても他のノード/PIでコマンドを実行できます。次に、IPアドレスが192.168.3.216のネットワーク内のノードを安全にシャットダウンする別の例を示します

ssh [email protected] 'sudo poweroff'

次の図は、SSHを使用してワーカーノード(192.168.3.216)にログインし、ワーカーノードから制御端末をマスターノードに戻す方法を示しています。

上の図からわかるように、ワーカーノードへのログインは直接行われます。つまり、初めての場合を除いて、パスワードを入力しません。ただし、端末の制御がマスターノード(192.168.3.215)に戻るたびに、ログインクレデンシャルを入力する必要があります。このようにして、マスターは常に外部の脅威から保護されます。

そのため、SSH経由で他のノードにコマンドを発行した後、データを複数のノードに送信する必要がある場合があります。ノードの数が少ない場合は、各ノードに手動でログインし、ディスプレイとキーボードに接続して、ファイルを送信できます。ただし、これは、クラスターのサイズが大きい場合に行うには非常に非効率的な方法です。より簡単な方法は、SCPを使用してファイルを送信することです。次のコマンドを使用してSCPをインストールします:

sudo apt-get install scp

一部のLinuxOSにはSCPがプリインストールされている場合がありますが、使用していたRaspbianにはSCPがインストールされていないことに注意してください。単一のファイルを送信するための一般的なコマンドは次のとおりです。

scp(ローカルデバイス上のファイルのパス)[メールで保護](リモートロケーションのパス)

例:

scp /pi/example.c [email protected] /pi/project

ここで、データを送信するリモートデバイスはIPアドレスによって認識されます。ディレクトリ内の多くのファイルは、再帰オプション(-R)を使用して送信できます。例:

scp -r /pi/project [email protected] /pi/project

上記のコマンドは、/ pi/project内のすべてのファイルをローカルホストからIPアドレスで識別されるリモートホスト内の再帰フォルダーに再帰的に転送します。

次の画像は、さまざまなsshおよびscpコマンドを示しています。まず、現在のフォルダの内容を一覧表示し、次に「scp」を再帰的に呼び出して、現在のフォルダ内のすべてのファイルを別のノード内のフォルダに転送します。次に、他のノードにログインし、scpがコンテンツを宛先に正常に転送したことを示します。

SCPは、他のいくつかのオプションとともに使用して、いくつかの条件を満たすために転送を行うことができます。ここにいくつかのオプションがあります:

    • 「-p」オプションを使用して、元のファイルの変更時間、アクセス時間、およびモードを保持できます。例:

      scp -p test.c [email protected]:~/

      ここでは、ファイル「test.c」のアクセス時間、アクセスモード、および最終変更時間が、宛先ノードにも保持されます。

    • SCPを使用すると、ファイルをネットワーク経由で宛先に送信する前に圧縮できます。これは、ファイルが転送されるのに非常に大きい場合に非常に役立ちます。したがって、圧縮すると、ファイルの送信速度が向上します。これを行うには、オプション「-C」を使用します。例:

      scp -pC test.c [email protected]:~/

      ここでは、複数のオプションを使用でき、それらの両方の機能がコマンドに適用されることがわかります。

    • ソケットプログラミングには、ポートを介したデータの送受信が含まれ、SCPを使用して特定のポートを介してリモートホストにデータを送信できます。これは、「-P」オプションを使用して実行できます。例:

      scp -P 21938 test.c [email protected]:~/

      ここでは、データの送信に使用されるポートは1938です。

    • 上の画像のように、ファイルの転送状況を知りたくない場合があります。大量のファイルがある場合は、転送ステータスをオフにするのが理にかなっています。これは、「-q」オプションを使用して行うことができます。例:

scp -rq ~/files [email protected]:~/files

ここでは、filesという名前のフォルダーの内容が別のノードのfilesフォルダーに転送されますが、ステータスバーとデバッグメッセージはすべて無効になっており、表示されません。


Linux
  1. Kali LinuxにSSH(セキュアシェル)サービスをインストールする方法

  2. SCPとSFTPを使用してLinuxホスト間でファイルを安全にコピーする方法

  3. Linux シェル スクリプトまたは変数の日付と時刻の書式設定

  1. Linux で「パスワードなし」の ssh ログイン用に SSH キーをセットアップする方法

  2. Linux シェルで rz と sz を使用する

  3. SCP を許可するが、SSH を使用した実際のログインは許可しない

  1. ncおよびpvコマンドを使用して2台のコンピューター間でファイルを転送する方法

  2. Linux管理用のSecureShell(SSH)コマンド。

  3. Linuxでのキーベースの認証にssh-keygenと共有を使用する