
Linux システム上のサーバー間でいくつかのファイルを転送したいとします。 タスクを達成する方法はたくさんありますが、ファイルを安全に転送することが優先される場合は、いくつかのオプションが残されています。 最も簡単な解決策は、scp または secure copy コマンドを使用して、セキュリティを気にせずにファイルを転送することです。 この記事では、Linux システムで scp コマンドを使用して転送ファイルを安全に使用する方法について説明します。
Linux で scp コマンドを使用してファイルを転送する (2023)
Linuxのscpコマンドとは
安全なネットワークを介してファイルを転送する場合、scp コマンドは非常に便利です。 Secure Copy Protocol の略で、SSH (Secure Shell) 接続を介して 2 つのシステム間でファイルとディレクトリを転送します。 ssh を使用すると、ファイルがデフォルトで暗号化されるため、ファイルのセキュリティを確保できます。 簡単に言えば、scp コマンドは cp コマンドのより安全なバージョンであり、Linux ターミナル コマンドの記事ですべてを読むことができます。
scp コマンドの使用方法: 構文とオプション
scp 経由でファイルを転送する前に、ここでコマンドの構文とオプションを見てみましょう。
scp <オプション> <[email protected]_ip_address:path/to/source/file> <[email protected]_ip_address:ターゲット/パス>
構文を理解する:
- まず、<[email protected]_ip_address:path/to/source/file> は、ファイル/ディレクトリを転送する必要がある「ソース」システムを指定します。
- 2 番目、<[email protected]_ip_address:target/path> は、ファイル/ディレクトリの転送先の「ターゲット」システムを指定します。
上記のパラメーターのいずれかをそのままにしておくと、Linux の scp コマンドは最初にファイルを検索し、次にファイルをローカルにコピーします。 コマンドと組み合わせるオプションの一部は次のとおりです。
OptionsDestination-P ホスト システムに接続するポートを指定します。 省略した場合、デフォルトでポート 22 が使用されます。-p ターゲット システムにコピーするときに、元のファイルの変更時刻、アクセス時刻、およびモードを保存します。-r ディレクトリ全体をターゲット システムに再帰的にコピーします。 -3このフラグを使用すると、ターゲット システムとローカル システムの両方にファイルがコピーされます。-4scp コマンドが IPv4 アドレスのみを使用するように強制します。 scp コマンドを使用して、IPv6 アドレスのみを使用します。
scp コマンドを使用してファイルをコピーする方法
Linux で scp コマンドを使用する前に、ホスト システムとターゲット システムの両方で満たす必要のある前提条件がいくつかあります。
- sshをインストールする必要があります
- root アクセスまたは sudo 権限を持つ任意のユーザー
ローカル ホストからリモート ターゲットにファイルをコピーする
ローカル システムからリモート ターゲットに転送する必要があるファイルがある場合は、次の構文を使用する必要があります。
scp <オプション>
上記の構文が複雑に見える場合は、例を示して説明します。
scp test.txt [email protected]:/home/remote2/ドキュメント/
上記の例では:
- test.txt は転送するファイルの名前で、ローカル システムの現在のディレクトリにあります。
- test は、ターゲット システムのユーザー名です。
- 139.144.11.105 は、ターゲット システムの IP アドレスです。
- /home/remote2/Documents/ は、転送されたファイルが保存されるターゲット システム上の場所です。
リモート ホストからローカル ターゲットにファイルをコピーする
リモート ホストからローカル マシンにファイルを転送する必要がある場合は、Linux システムで次の scp コマンド構文を使用します。
scp
たとえば、作業中のリモート サーバーから 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
2. 暗号化アルゴリズムには、最も一般的に使用されるアルゴリズムである「rsa」または任意の他のアルゴリズムを使用できます。
3. 次に、ssh キーを保存する場所を選択するよう求められます。 選択した任意の場所またはデフォルトの場所に保存できます。
4. パスフレーズについては、任意のものを入力するか、Enter キーを押して空白のままにすることができます。
5. 次に、以下のコマンドを使用して公開鍵を宛先サーバーにコピーします。 これにより、ssh を使用してパスワードなしで宛先システムにログインすることもできます。
ssh-copy-id
注: ログインのパスワードなしの方法は、ssh キーを生成したユーザーに対してのみ機能します。
6. ssh キーを作成してリモート サーバーに保存したら、次の scp コマンド構文を使用して、Linux を実行している 2 つのリモート システム間でファイルを交換します。
scp
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
例 – 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/ドキュメント
例のコマンドがどのように機能し、何をするかを理解しましょう。
- -p 2222 は、ポート 22 経由で接続するように指定するために使用されます
- test1.txt test2.py test3.sh test4.c は転送するファイルの名前です
- remote_1 は、受信側システムのユーザー名です
- 10.10.11.113 はレシーバーの IP アドレスです。
- /home/remote_1/Documents は、受信したファイルを格納するパスを指します。
以下に示すように、ワイルドカードを使用して、同じ拡張子を持つ複数のファイルを送信することもできます。
scp
たとえば、すべての .py ファイルをリモート サーバーに送信する必要がある場合は、Linux ターミナルで次の scp コマンドを使用します。
scp *.py [email protected]:/ホーム/リモート_1/
ここ、
- *.py はすべての python ファイルを意味します
- remote1 は受信者のユーザー名です
- 10.10.11.113 は受信者の IP アドレスです。
- /home/remote_1/ は、受信したファイルを保存する場所です
よくある質問
SCP ファイル転送は安全ですか?
セキュア コピー プロトコルまたは scp は、SSH テクノロジに基づくプロトコルであり、2 つのホスト間のファイル交換に暗号化と認証を使用します。 これにより、2 つのホスト間の完全なデータ セキュリティと整合性が確保されます。
SCP は SFTP より安全ですか?
SCP プロトコルと SFTP プロトコルはどちらも、セキュリティの点で同等です。 SFTP で scp を使用する主な利点は、特に遅延の大きいネットワークで役立つ高速な転送速度です。
Linux で scp コマンドを使用して安全にファイルを転送する
ある時点で、すべてのユーザーがネットワークを介していくつかのファイルを交換する必要があります。 scp コマンドを使用すると、待ち時間の長いネットワーク上でも安全かつ効率的にファイルを簡単に転送できます。 確かに、さまざまな scp オプションと構文を知っていることも役立ちます。 また、Linux でファイルの名前を変更する方法と Linux でファイルを削除する方法に関するガイドを参照して、OS でのファイル管理スキルをさらに向上させることもできます。 この記事が、scp コマンドを使用して Linux コンピューターでファイルを転送する方法を学習するのに役立つことを願っています。 コマンドの使用中に問題が発生した場合は、コメント セクションでお知らせください。