Linuxでscpコマンドを使用してファイルを安全に転送する方法
Linux システムのサーバー間でいくつかのファイルを転送したいとしましょう.このタスクを実行するにはいくつかの方法があります. しかし、安全なファイル転送が優先される場合はどうでしょうか? いくつかのオプションが残されています。 最も簡単な解決策は、scp コマンドまたはセキュア コピーを使用して、セキュリティを気にせずにファイルを転送することです. この記事では、Linux システムで scp コマンドを使用してセキュアなファイル転送を使用する方法について説明します.
Linux で scp コマンドを使用してファイルを転送する (2023)
Linux の scp コマンドとは何ですか?
安全なネットワークを介してファイルを転送する場合、scp コマンドが非常に便利です。 セキュア コピー プロトコルの略です。 SSH (Secure Shell) 接続を介して 2 つのシステム間でファイルとディレクトリを転送します. ssh を使用すると、ファイルのセキュリティを確保できます. これらはデフォルトで暗号化されているため、scp コマンドは cp コマンドのより安全なバージョンです。これについては、Linux ターミナル コマンドの記事を参照してください。
scp コマンドの使用方法: 構文とオプション
scp 経由でファイルを転送する前に、ここでコマンドの構文とオプションを見てみましょう。
scp <option> <[email protected]_ip_address:path/to/source/file> <[email protected]_ip_address:target/path>
文法を理解する:
- 最初の1つ、
<[email protected]_ip_address:path/to/source/file>
ファイル/ディレクトリの転送元となる「ソース」システムを指定します。 - 2番、
<[email protected]_ip_address:target/path>
ファイル/ディレクトリを転送する「ターゲット」システムを指定します。
上記のパラメーターのいずれかをオフのままにしておくと、Linux の scp コマンドは最初にファイルを検索してからローカルにコピーします。 コマンドと組み合わせるオプションのいくつかは次のとおりです。
選択 | 行き先 |
---|---|
-P |
ホスト システムに接続するポートを指定します。指定しない場合、デフォルトでポート 22 が使用されます。 |
-p |
ターゲット システムにコピーするときに、ソース ファイルの変更時刻、アクセス時刻、およびモードを保持します。 |
-r |
ディレクトリ全体をターゲット システムに再帰的にコピーしました。 |
-J |
プロキシ システム (ジャンプ ホスト) を介してソース システムと宛先システムを接続するために使用されます。 |
-3 |
このフラグを使用する場合ターゲット システムとローカル システムの両方にファイルをコピーします。 |
-4 |
scp コマンドが IPv4 アドレスのみを使用するように強制します。 |
-6 |
scp コマンドが IPv6 アドレスのみを使用するように強制します。 |
scp コマンドを使用してファイルをコピーする方法
Linux で scp コマンドを使用する前に、ホストとターゲット システムの両方で満たす必要のある前提条件がいくつかあります。
- sshをインストールする必要があります
- root アクセスまたは sudo 権限を持つユーザー。
ファイルをローカル ホストからリモート ターゲットにコピーします。
ローカル システムからリモート ターゲットに転送するファイルがある場合次の構文を使用する必要があります。
scp
<options>
<path_to_local_file> <remote_user>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
上記の構文が複雑に思われる場合は、 例はそれを明確にするでしょう:
scp test.txt [email protected]:/home/remote2/Documents/
上記の例では:
test.txt
転送するファイルの名前で、ローカル システムの現在のディレクトリにあります。test
ターゲット システムのユーザー名です。139.144.11.105
ターゲット システムの IP アドレスです。/home/remote2/Documents/
転送されたファイルが保存されるターゲット システム上の場所です。

リモート ホストからローカル ターゲットにファイルをコピーします。
リモート ホストからローカル マシンにファイルを転送する場合。 Linux システムで次の scp コマンド構文を使用します。
scp
<options>
<remote_user>@<remote_host_ip_address>:<path_of_file_to_transfer> <path_to_store_file>
たとえば、作業中のリモート サーバーから test.py というファイルを転送するとします。 次のコマンドを使用します。
scp [email protected]:/home/test/test1.py ~/test1.py
この例では:
test
リモートホストのユーザー名です。10.10.11.113
リモート ホストの IP アドレスです。
リモートホストから転送されるファイルのパスです。/home/test/test1.py
~/test1.py
ローカル マシンに転送され、ホーム ディレクトリに格納された後のファイルの名前です。

あるリモート ホストから別のリモート ターゲットにファイルを転送します。
scp コマンドを使用すると、ローカル システムとリモート マシンの間でファイルを転送できるだけではありません。 2 つのリモート システム間でファイルを転送します。ただし、あるリモート システムから別のリモート システムにファイルを転送する前にソース システムで秘密 ssh キーと公開 ssh キーを作成することをお勧めします。 宛先システムに公開鍵のコピーを保存します。
一般に、ユーザーはエラーについて不平を言います。 2 つのリモート システム間でファイルを転送するときに「ホスト キーの検証に失敗しました」 エラーをスキップするには、追加の手段として ssh キーを使用します。 ここでそれを行う方法を説明しました:
1. 次のコマンドを使用して、ソース サーバーで公開/秘密キーのペアを生成します。
ssh-keygen -t <encryption_algorithm>
2. 暗号化アルゴリズムには、「rsa
これは、最も頻繁に使用されるアルゴリズム、または選択した他のアルゴリズムです。
3. 次に、ssh キーを保存する場所を選択するよう求められます. 選択した任意の場所またはデフォルトの場所に保存できます.
4. パスフレーズについて必要なものを入力することも、Enter キーを押して空白のままにすることもできます。

5.次に、以下のコマンドを使用して公開鍵を宛先サーバーにコピーします.これにより、sshを使用してパスワードなしで宛先にログインすることもできます.
ssh-copy-id <destination_username>@<destination_ip_address>
記録注: パスワードなしのログイン方法は、ssh キーを作成したユーザーに対してのみ機能します。
6. ssh キーを作成してリモート サーバーに保存したら、. Linux を実行している 2 つのリモート システム間でファイルを交換するには、次の scp コマンド構文を使用します。
scp <options> <remote_user_1>@<remote_host_ip_address>:<path_of_file_to_transfer> <remote_user_2>@<remote_target_ip_address>:<path_to_store_in_remote_destination>

test.txt というファイルをあるリモート ホストから別のリモート レシーバに転送するとします。 次のコマンドを使用します。
scp [email protected]:/home/test1/test.txt [email protected]:/home/remote2/Documents/test1.txt
この例では:
remote1
リモート送信側ホストのユーザーの名前です。10.10.11.113
リモート送信側ホストの IP アドレスです。/home/test1/test.txt
送信するファイルへのパスです。remote2
ターゲットのリモート受信者のユーザー名です。10.11.27.111
リモート受信ターゲットの IP アドレスです。/home/remote2/Documents/test1.txt
受信するファイル用に保存する名前とパスです。
scp コマンドを使用して複数のファイルを転送します。
複数のファイルを 1 つずつ転送するのは、誰にとっても面倒な作業です。 以下の構文を使用して、Linux で scp コマンドを使用してファイルを交換できます。
scp <path_to_file_1> <path_to_file_2> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
たとえば、test1.txt、test2.py、test3.sh、および test4.c の 4 つのファイルをリモート レシーバーに送信するとします。 以下のコマンドを使用できます。
scp -P 22 test1.txt test2.py test3.sh test4.c [email protected]:/home/remote_1/Documents
例のコマンドがどのように機能し、どのように機能するかを理解しましょう。
-p 2222
ポート 22 を介して接続するために使用されます。test1.txt test2.py test3.sh test4.c
転送するファイルの名前です。remote_1
受信側システムのユーザー名です。10.10.11.113
受信者の IP アドレスです。/home/remote_1/Documents
受信したファイルを格納するパスを参照します。

以下に示すように、ワイルドカードを使用して、同じ拡張子を持つ複数のファイルを送信できます。
scp <wildcard>.<extension> <remote_receiver>@<remote_target_ip_address>:<path_to_store_in_remote_destination>
たとえば、 すべての .py ファイルをリモート サーバーに送信します。Linux ターミナルで以下の scp コマンドを使用します。
scp *.py [email protected]:/home/remote_1/
ここ、
*.py
すべてのpythonファイルを意味しますremote1
受信者のユーザー名です。-
10.10.11.113
受信者の IP アドレスです。 /home/remote_1/
受信したファイルが保存される場所です。

よくある質問
セキュア コピー プロトコルまたは scp は、SSH テクノロジに基づくプロトコルであり、暗号化と認証を使用して 2 つのホスト間でファイルを交換します。 これにより、2 つのホスト間の完全なデータ セキュリティと整合性が確保されます。
SCP プロトコルと SFTP プロトコルはどちらも、セキュリティの点で同じレベルにあります。 SFTP で scp を使用する主な利点は、転送速度が速いことです。 これは、待ち時間の長いネットワークで特に役立ちます。
Linux で scp コマンドを使用して安全にファイルを転送します。
ある時点ですべてのユーザーは、ネットワークを介していくつかのファイルを交換する必要があります.scp コマンドを使用すると、待ち時間の長いネットワークでも安全かつ効率的にファイルを簡単に転送できます。 それも便利です。 また、Linux でファイルの名前を変更する方法と Linux でファイルを削除する方法に関するガイドをチェックして、オペレーティング システムでのファイル管理スキルを向上させることもできます。 この記事が、scp コマンドを使用して Linux コンピューターでファイルを転送する方法を学ぶのに役立つことを願っています. コマンドの使用中に問題が発生した場合は、コメント セクションでお知らせください.