コンピュータのネットワークを介してファイルを転送したいと考えたときに、セキュリティの問題に直面したことはありますか?赤ずきんちゃんのように、ただネットワークにファイルを放り出し、ファイルが安全に保たれることを望むことはできません。セキュリティ対策が必要です。不正アクセス、ネットワーク盗聴、データ侵害、その他の種類の脅威からデータを確実に保護するファイル転送プロトコルを使用する必要があります。
Secure Copy Protocol (SCP) は、ネットワーク上の異なるマシン間でファイルを転送する強力なファイル転送ネットワーク プロトコルです。このブログ投稿では、このプロトコルについてさらに詳しく説明し、リモート マシンからローカル マシンへの SCP の使用の可能性を探ります。
SCPはどのように機能しますか?
SCP は SSH (Secure Shell) を使用してファイルを転送します。しかし、これはいったい何を意味するのでしょうか? SSH は、サーバーへの安全なリモート アクセスのためのネットワーク プロトコルです。送信されたデータ ファイルの認証、暗号化、整合性を検証するための方法が装備されています。 SCP は、SSH によって提供されるこれらのセキュリティ機能と暗号化方式を利用して、ネットワーク上でファイルを安全に転送します。このようにして、リモート サーバーからローカル サーバーへの SCP を利用して安全な接続とファイル転送を行うことができ、データの信頼性と機密性を確保できます。
ファイル転送に SCP を使用する。なぜ、どのようにして?
SCP をリモートからローカルに、また SCP ローカルからリモートに使用することは、ファイルを転送する効率的かつ柔軟な方法です。 SCP には、ファイル転送に関していくつかの大きな利点があります。たとえば、SCP は、FTP などの他のファイル転送方法よりも強力なセキュリティ対策を提供します。 SCP が他のプロトコルと異なるもう 1 つの側面は速度です。 SCP は通常、SFTP などの他のプロトコルよりもはるかに高速で、Linux マシン間のファイル転送に最適なツールです。
SCP を使用してファイルを再配置できます。
- ローカルマシンからリモートマシンへ
- リモートマシンからローカルマシンへ
- リモート マシンから別のリモート マシンへ。
それでは、実際にファイル転送に Linux SCP 構文を使用することに移りましょう。最初に行う必要があるのは、両方のコンピュータで SSH をセットアップすることです。ただし、SSH は通常、すべての Linux マシンにインストールされることに注意することが重要です。その場合は、これらの手順をスキップできます。
1. SSHの設定
次のコマンドを実行して SSH をインストールします。
sudo apt install openssh-client
2. SSH キーの生成
その後、クライアント デバイスは SSH 接続を確立する必要があります。クライアント マシンとサーバー マシン間の安全な接続には、秘密キーと公開キーを確立する必要があります。このコマンドは、SSH キー ペアを作成します。
ssh-keygen
このコマンドの実行中に、キー ペアの名前とパスフレーズの入力を求められる場合があります (これはオプションです)。次に、キー ペアが作成されたら、公開キーをサーバー マシンにコピーする必要があります。
ここで、SCP コマンドの一般的な形式を見てみましょう。
scp [options] [source username@IP]:/[directory/file name] [destination username@IP]:/[directory]
- [options] > この最初の括弧は、後で説明する SCP コマンドのさまざまなオプションに置き換えることができます。
- [source username@IP] > この括弧は、ローカル マシンのユーザー名と IP アドレスに置き換える必要があります。例: [email protected]
- [ディレクトリ/ファイル名] > この括弧は、送信するファイルの場所に置き換える必要があります。
- [宛先ユーザー名@IP] > この括弧は、受信側マシンのユーザー名と IP アドレスに置き換える必要があります。
- [ディレクトリ] > このセクションをリモート マシン上のファイルの目的の場所に置き換えます。
これで、一般的なコマンドがどのようなものであるかがわかりました。 SCP コマンドの便利なオプションをすべて見てみましょう。
| オプション | 使用事例 |
| -C |
このオプションを使用すると、SCP はファイルを転送するときにファイルを圧縮します。
|
| -c <暗号> |
このオプションを使用すると、SCP に特定の暗号を使用するように指示できます。たとえば、scp -c <aes128-ctr> となります。
|
| -v |
このオプションでは、プロセスのステップごとのフローが表示されます。
|
| -l <キロバイト単位の制限> |
このオプションを使用すると、最大帯域幅の制限を設定できます。たとえば、次の例では、帯域幅の使用量を 1 秒あたり 100 kb に設定します: scp -l 100
|
| -P |
このオプションを使用すると、接続するリモート サーバーの SSH ポートを変更できます。 SCP はデフォルトでポート 22 を使用します。
|
| -S <プログラム名> |
このオプションを使用して、接続するプログラムを選択できます。
|
| -r |
ファイルまたはディレクトリ全体を再帰的にコピーします。
|
SCP を使用したファイルの転送
SCP には 3 種類の転送があることを覚えていますよね?ここで、各タイプの転送を個別に検討していきたいと思います。ただし、始める前にミッションを定義しましょう。 Linux コンピューターのデスクトップにこの猫の写真があり、最初のステップとして、それを Linux リモート サーバーに転送したいと考えています。次に、それをローカル コンピューターに転送します。そして最後に、招き猫は 2 台のリモート マシン間を移動します。

SCP をローカルからリモートへ
このコマンドを使用すると、ファイルがローカル コンピューターからリモート サーバーに転送されます。
scp [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
パスワードを指定して scp コマンドを使用するには、リモート サーバーのパスワードを入力する必要があります。これで完了です。

SCP をリモートからローカルへ
このプロセスを元に戻すために、リモート サーバーの端末にアクセスする必要はありません。ローカル コンピューターのターミナルで、次のコマンドを入力します。
scp [username]@[IP address of the remote machine]:[path/to/the/file] [path/to/the/location]
ご覧のとおり、このコマンドの 2 つの部分を逆にしただけです。

2 つのリモート マシン間の SCP
次に、2 つのリモート マシン間で猫を転送しましょう。この手順では両方のリモート マシンのパスワードが必要となるため、パスワードを持っていることを確認してください。 2 台のリモート コンピューター間でファイルを転送するには、次のコマンドを使用します。
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]

その他の一般的な SCP コマンド
最も一般的な SCP コマンドは、リモートからローカルへの scp、ローカルからリモートへの scp、および 2 つのリモート ホスト間の SCP です。しかし、そこで止まらずに、他の有用な Linux scp の例を見てみましょう。
1. ディレクトリ全体を再帰的にコピーする
ディレクトリ全体とそこに含まれるすべてのファイルを転送したいと想像してください。これらのファイルを 1 つずつ転送するのは非常に時間がかかります。代わりに、 scp multiple files コマンドを使用して、ディレクトリを再帰的にコピーできます。
scp -r [Path/to/directory] [username of the remote server]@[Ip address]:/[path/to/the/location]
これは多くのシナリオで役立ちます。
- コードの展開: コードや Web アプリケーションをデプロイする場合、ファイルやスクリプトなどのすべてのコンポーネントを含むディレクトリ全体を転送する必要がある場合があります。
- バックアップと同期: ディレクトリ全体のバックアップが必要な場合、またはローカル マシンとリモート サーバー上の 2 つのディレクトリを同期したい場合は、すべてを再帰的にコピーする必要があります。
- システムの移行: システム移行における重要な作業は、あらゆる重要な情報をコピーして転送することです。 -r オプションを指定して SCP コマンドを使用すると、移動プロセスで何も見逃すことがなくなります。
2. 帯域幅の使用を制限する
データの転送速度を制御したい場合は、次のコマンドを使用できます。
scp -l <limit> [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
それにしても、なぜそんなことをするのでしょうか?
これら 2 つのシナリオでは、Linux scp 構文を使用して帯域幅の制限を設定できます。
- ネットワークの混雑: ネットワークが非常に混雑している場合、scp で帯域幅を制限すると、ネットワーク リソースの分散に役立ちます。 SCP で帯域幅を制限すると、他のネットワーク関連タスクが問題なく実行されます。これは、共有ネットワーク上でファイルを転送する場合にも重要であり、プロセスが他のユーザーのネットワーク活動を妨げる可能性があります。
- バックグラウンド転送: 自動バックアップや同期プロセスなどのバックグラウンドでの SCP 転送中に、これらのタスクがネットワーク リソースを使い果たす可能性があります。この場合、これらの転送プロセスの帯域幅を制限して、リソースをより適切に管理できます。
3. 詳細ログの取得
SCP で -v オプションを使用すると、転送プロセスに関する追加情報の詳細なログが得られます。以下のコマンドを使用すると、詳細なフィードバックと情報を取得できます。
scp -v [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
このコマンドを覚えて使用する必要がある理由は次のとおりです。
- トラブルシューティング: このオプションを使用すると、実行中の転送の進行状況が表示されます。ファイルサイズや完了率などの情報を確認できます。また、エラー メッセージや警告も表示されます。これらのデータを組み合わせることで、必要に応じて転送プロセスを監視し、トラブルシューティングを行うことができます。
4. SSHポートの指定
-P オプションを指定して Linux scp 構文を使用すると、次のことが可能になります。 SSHポートを変更する。これを行うためのコマンドは次のとおりです。
scp -P [port number] [path/to/the/file] [Username]@[IP address]:[path/to/the/location]
これは次の場合に役立ちます。
- ファイアウォール構成: デフォルトの SSH ポートが制限されている場合、または潜在的な脅威から SSH サービスを隠したい場合は、SSH ポートを変更できます。
SCPの代替となるものはありますか?
SCP は高速かつ安全であり、適切な Linux scp 構文とトラブルシューティングの知識があれば、必要な唯一のツールになります。ただし、代替案を検討することに害はありません。
1.rsync
rsync は、高度な同期機能、増分転送、リモートおよびローカル コピーを備えた多用途のファイル転送ツールです。また、ソース ファイルと宛先ファイルの差分のみを転送することで、帯域幅の使用量を削減することもできます。 rsync を使用するもう 1 つの大きな利点は、中断されたファイル転送を中断したところから再開してプロセスを続行できることです。
rsyncの長所
- ファイルとディレクトリの効率的な同期。
- デルタ転送アルゴリズムをサポートし、データ転送を削減します。
- 中断された転送を再開できます。
rsyncの短所
- rsync がソース システムと宛先システムの両方にインストールされている必要があります。
- scp と比較して、より多くのセットアップおよびコマンド オプションが必要です。
2. SFTP (SSH ファイル転送プロトコル)
SFTP は、SSH 経由でファイルを転送するための安全な方法を提供します。 FTP と同様の機能を提供しますが、SCP と同様に、暗号化された SSH 接続上で動作します。しかし、一部の領域では、SFTP の利点が SCP の利点を上回ります。 SCP はディレクトリ リストの生成、ディレクトリの作成または削除などを行うことができません。ただし、SFTP はこれらすべてのタスクを実行できます。
SFTP のプロ
- 暗号化による安全なファイル転送。
- リモートファイル管理機能。
- ほとんどの Linux および Unix システムで幅広く利用可能です。
SFTPの短所
- コマンドの構文と使用法は従来の FTP とは異なります。
- 特定の組み込みシステムまたはデバイスではサポートが制限されている場合があります。
3. FTP (ファイル転送プロトコル)
FTP は、ファイル転送に広く使用されている標準プロトコルです。クライアント/サーバー モデルで動作し、基本的なファイル転送機能を提供します。
FTP プロ
- さまざまなプラットフォームにわたる幅広いサポート。
- 使い慣れたコマンドライン クライアントとグラフィカル クライアントを利用できます。
FTPの短所
- scp や sftp に比べて暗号化が欠如しており、安全性が低くなります。
- 接続を確立するには追加のファイアウォール構成が必要になる場合があります。
- プレーンテキスト認証。
全体として、scp は SSH 経由で安全なファイル転送を行うためのシンプルで信頼性の高い選択肢ですが、rsync、sftp、FTP などの代替手段は、特定の要件に応じて追加機能と柔軟性を提供する可能性があります。
では、どれを選択するかをどのように決定しますか?セキュリティ、同期のニーズ、使いやすさ、システムやプロトコルとの互換性などの要素を考慮する必要があります。たとえば、セキュリティとデータの機密性がファイル転送において最も重要な要素である場合、FTP は適切な選択ではありません。
結論
SCP は、コンピュータ間でファイルを転送するための高速かつ安全なツールです。 scp を使用すると、リモートからローカル、ローカルからリモート、さらには 2 つのリモート システム間でファイルを転送できます。そして、rsync のような適切な仕事をする SCP の代替手段はありますが、特にセキュリティと速度の点で、SCP は多くの点でそれらを超えています。このブログ投稿では、SCP、そのユースケース、代替手段について説明し、頻繁に使用される構文に簡単にアクセスできるチートシートも提供しました。
よくある質問
SCP をリモートからローカルに使用するときに注意すべきセキュリティ上の懸念事項はありますか?
SCP はかなり安全で安全なツールであり、使用中にセキュリティの脅威を心配する必要はありません。ただし、可能な限り追加のセキュリティ対策を講じることを常にお勧めします。
SCP をリモートからローカルに使用するときに発生する一般的なエラーにはどのようなものがありますか?
SCP を使用してリモート サーバーからローカル マシンにファイルを転送すると、ユーザーはいくつかの一般的なエラーに遭遇する可能性があります。 SCP リモートからローカルへの使用時に最も一般的なエラーを 2 つ示します。
- そのようなファイルまたはディレクトリはありません: このエラーは、正しいポート番号が指定されていない場合、ファイルのアクセス許可設定が間違っている場合、またはログイン情報が間違っている場合に発生します。
- ホスト キーの検証に失敗しました: このエラー メッセージは、サーバーのアップグレードによりホスト キーが変更された場合に発生します。ホスト キーは、以前にそのサーバーに接続したことがあり、ホスト キーの検証が失敗した場合は、サーバーの ID が変更されたことを示します。このエラーは、詐欺サーバーへの接続からユーザーを保護しようとしています。
SCP を使用してリモート システム間でファイルを転送するにはどうすればよいですか?
SCP を使用してシステム間でファイルを正常に転送するには、両方のコンピュータが SSH 経由でアクセスできる必要があります。リモート マシンの IP アドレスとパスワードも必要です。残りは適切な SCP コマンドを使用するだけです。
scp [username of the 1st remote machine]@[IP address of the 1st remote machine]:[path/to/the/file] [username of the 2nd remote machine]@[IP address of the 2nd remote machine]:/[path/to/location]
このコマンドを入力すると、サーバーにパスワードを入力するように求められます。その後、ファイルが転送されます。