12 scp command examples securely transfer files linux
このチュートリアルでは、LinuxおよびUnixでファイルを安全にコピーするために使用されるセキュアコピープロトコルまたはSCPコマンドについて、構文と例を使用して説明します。
この記事では、ファイル転送に使用されるSCP(Secure Copy Protocol)コマンドについて説明します。いくつかの例を使用して、それが何であるか、およびどのように機能するかを確認します。それでは、最初にSCPコマンドとは何かを理解してみましょう。
学習内容:
SCPコマンドとは何ですか?
SCP(Secure Copy Protocol)は、コンピューターネットワーク上のホスト間でファイルを安全に転送するために使用されるネットワークプロトコルです。 LinuxおよびUnixライクなシステムでこのコマンドラインユーティリティを使用すると、ローカルホストからリモートホストへ、またはリモートホストからローカルシステムへ、または2つのリモートホスト間でファイル転送を行うことができます。
(画像 ソース )
SCPは、ファイルを転送するためにSSH(Secure Shell)メカニズムを利用することにより、データの信頼性、暗号化、および機密性を保証します。したがって、転送中のデータはスヌーピング攻撃から保護されます。クライアントは、このプロトコルを使用して、サーバーとの間でファイルとディレクトリをアップロードおよびダウンロードできます。認証にはパスワードまたはキーのいずれかが必要です。 SCPのデフォルトポートはTCPポート22です。
SCPプロトコルの利点は、ファイル転送のためにFTPセッションを開始したり、リモートホストに明示的にログインしたりする必要がないことです。
SCPプロトコルの構文
#1)ローカルからリモートホストにファイルをコピーする場合
scp (options) SourceFileName UserName@TargetHost:TargetPath
これは、ユーザーアカウントを使用して、現在のホストからターゲットホストのターゲットパスにソースファイルをコピーするSCPコマンドの非常に基本的な構文です。通常、これはcopycpコマンドと非常によく似ています。
#2)リモートホストからローカルにコピーする場合
ファイルをコピーする場合:
scp (options) UserName@SourceHost:SourceFilePath TargetFileName
または、 ファイルをダウンロードするだけです。
scp (options) UserName@SourceHost:SourceFilePath
フォルダを(再帰的に)コピーする場合:
scp -r UserName@SourceHost:SourceDirectoryPath TargetFolderName
リモートホストがデフォルトのポート22以外のポートを使用している場合は、コマンドで-Pオプションを使用してポート番号を明示的に指定する必要があります。
#3)あるリモートコンピュータから別のリモートコンピュータへのコピー
scp (options) UserName@SourceHost:SourcePath UserName@TargetHost:TargetPath
あるリモートコンピュータから別のリモートコンピュータにファイルをコピーする場合、トラフィックはコンピュータを通過しません。この操作は、2つのリモートサーバー間で直接実行されます。
#4)複数のファイルをコピーする
ローカルホストからリモートホストに複数のファイルをコピーする場合:
scp file1 file2 UserName@TargetHost:TargetDirectoryPath
リモートホストからローカルホストの現在のディレクトリに複数のファイルをコピーするには:
scp UserName@SourceHost:SourceDirectoryPath{file1, file2}
SCPコマンドで使用されるオプション
SCPコマンドで最も一般的に使用されるオプションを以下に示します。
- -C :C、ここでは有効圧縮を表します。このオプションを使用すると、圧縮が有効になり、コピー中の転送速度が向上します。ソースでの圧縮とターゲットでの解凍が自動的に有効になります。
- -c: cは暗号を表します。デフォルトでは、SCPはファイルの暗号化に「AES-128」を使用します。暗号を変更する場合は、-cオプションに続けて暗号名を使用する必要があります。
- -私 : iは識別ファイルまたは秘密鍵の略です。一般に、Linux環境ではキーベースの認証が選択されます。したがって、-iオプションを使用して、秘密鍵ファイルまたはIDファイルについて具体的に言及できます。
- -l: lは制限帯域幅を表します。このオプションを使用して、使用する最大帯域幅を設定できます。キロビット/秒です。
- -B: このオプションは、コピー中にバッチモードを使用するために使用されます。
- -F: このオプションは、Linuxシステムに接続するために別のネットワークを使用する必要がある状況でコピー中に別のssh_configファイルを使用するために使用されます。このようなシナリオでは、ユーザーごとに代替のSSH構成ファイルを割り当てる必要があります。
- -P: 宛先ホストのsshポート番号がデフォルトのポート番号22と異なる場合は、-Pオプションを使用してポート番号を具体的に指定する必要があります。
- -p: このオプションは、コピー中にファイルのアクセス許可、変更、およびアクセス時間を保持するために使用されます。
- -q: このオプションは、静かモードでSCPコマンドを実行します。進行状況メーターがオフになり、Linuxターミナル画面にsshの転送の進行状況、警告、または診断メッセージが表示されません。
- -r: -rオプションは、ファイルとディレクトリを再帰的にコピーするために使用されます。 例えば、 フォルダ全体(およびフォルダ内のコンテンツ)をターゲットマシンにコピーする場合は、-rオプションを使用する必要があります。
- -S: このオプションは、接続に使用するプログラムを指定するために使用されます。
- -v: vは詳細を表します。このオプションは、ターミナル画面にSCPコマンド実行の進行状況を段階的に表示します。デバッグに非常に役立ちます。
SCPコマンドの例
例を参考にして、SCPコマンドの使用方法を理解しましょう。
例1: ローカルホストからリモートホストにコピーする場合
scp -v lockfile.txt kaushapx@10.172.80.167: /home/cpf657/kaushapx/test1
上記の例では、
30分より長いmp3へのyoutube
- -vオプションは、Linuxターミナルでこのコマンドの出力の詳細を表示するための詳細オプションとして使用されます。詳細出力を使用すると、コマンドの実行時にバックグラウンドで何が起こっているかを正確に知ることができます。これはデバッグに役立ちます。
- Lockfile.txtは、リモートホストに転送するソースファイル名です。
- Kaushapxはユーザー名の例です。このユーザー名アカウントを使用して、ファイルをリモートホストに安全にコピーします。
- 10.172.80.167は、ファイルの転送先となるターゲットリモートホストのIPの例です。
- / home / cpf657 / kaushapx / test1は、この転送されたファイルを配置する絶対パスの例です。
以下のスクリーンショットは、上記のSCPコマンドの実行を示しています。
例2: リモートホストからローカルシステムにコピーする場合:
scp kaushapx@10.172.80.167:/home/cpf657/kaushapx/test/parent/directory1/DemoFile.txt /home/tpf655/kaushapx
例3: 複数のファイルをリモートホストにコピーする場合:
scp DemoFile.txt log.xml kaushapx@10.172.80.167:/home/cpf657/kaushapx/test
例4: 2つのリモートシステム間でファイルをコピーする場合:
scp kaushapx@10.172.80.167:/home/cpf657/kaushapx/console.txt kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
例5: ファイルとディレクトリを再帰的にコピーする場合(-rオプションを使用):
ローカルホストに「test」というフォルダがあり、このフォルダに4つのファイルが含まれているとします。リモートホストにある「test1」という別のフォルダ内にフォルダ全体をコピーしたいと思います。
次のコマンドを使用します。
scp -r test kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
例6: 圧縮を有効にしてコピーの速度を上げるには(-Cオプションを使用):
例5で行ったのと同じフォルダーを転送しましょう。ただし、今回は圧縮を有効にします。
scp -r -C test kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
JavaでのSeleniumWebdriverサンプルコード
例7: コピー中に帯域幅を制限する場合(-lオプションを使用):
同じオプションを続けましょう。今回は-lオプションを使用して、帯域幅、たとえば500を指定します。ここに入力した帯域幅はKbit / sであることに注意してください。
例8: コピー中に別のsshポートを指定する場合(-Pオプションを使用):
ファイルをコピーしているリモートサーバーがデフォルトのポート22以外のポートを使用している場合は、-Pオプションを使用してSCPコマンドでポート番号を明示的に指定する必要があります。 例えば、 リモートサーバーのsshポートが2022の場合、SCPコマンドで-P2022について言及します。
scp -P 2022 console.txt kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
例9: コピー中にファイルのアクセス許可、変更、およびアクセス時間を保持する場合(-pオプションを使用):
scp -p console.txt kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
例10: クワイエットモードでファイルをコピーする場合(-qオプションを使用):
scp -q console.txt kaushapx@10.172.80.167:/home/cpf657/kaushapx/test1
例11: コピー中にSCP内のファイルを識別するため(-iオプションを使用):
上記の例では、my_private_key.pemはIDファイルまたは秘密鍵ファイルです。
例12: SCPを介したコピー中に別の暗号を使用する場合(-cオプションを使用):
scp -c 3des-cbc -r test1 kaushapx@10.182.46.76:/home/tpf655/kaushapx/test
SCPコマンドに関するFAQ
このセクションでは、SCPコマンドに関するいくつかのよくある質問について説明します。
Q#1)SCPコマンドとは何ですか?
回答: SCPはSecureCopyProtocolの略です。 SCPコマンドを使用すると、ネットワーク上のホスト間でファイルのコピーを安全に実行できます。データ転送にはSSHのメカニズムを使用します。キーまたはパスワードベースの認証を使用します。
Q#2)SCPはLinuxで何をしますか?
回答: Linuxでは、SCPコマンドは安全な方法でサーバー間でファイルを転送します。リモートサーバーとローカルホスト間、または2つのリモートサーバー間のファイルコピーである可能性があります。 SCPはLinuxにプリインストールされているコマンドであり、そのシンプルさとセキュリティで知られています。
Q#3)LinuxでファイルをSCPするにはどうすればよいですか?
回答:次のコマンド構文でSCPファイルを作成できます。
scp (options) (username@)(source_host:)file1 (username@)(destination_host:)file2.
SCPコマンドでは多くのオプションを使用できます。 例えば、 -Cは圧縮、-cは暗号、-Pはポート、-Iは秘密鍵、-lは制限、-rは再帰コピーなどです。
Q#4)ファイルをSCPするにはどうすればよいですか?
回答: Q#3で説明したように、SCPコマンドを使用してファイルをSCPできます。
Q#5)SCPはコピーまたは移動しますか?
回答: SCPコマンドは、ファイルをソースから宛先にコピーします。したがって、SCPの後、ファイルは両方のホストに存在します。
Q#6)ディレクトリにSCPを使用できますか?
回答: はい、ディレクトリにSCPを使用できます。ディレクトリ全体とその内容をコピーするには、-rオプションを使用する必要があります。
以下は、ローカルホストからリモートホストにディレクトリをコピーするためのSCPコマンド構文です。
scp -r localhost_path_to_directory username@target_server_ip:/path_to_target_directory/
Q#7)ディレクトリ内のすべてのファイルにSCPを使用するにはどうすればよいですか?
回答: ディレクトリ内のすべてのファイルでSCPを使用するには、ディレクトリパスに*を追加する必要があります。
scp -r localhost_path_to_directory/* username@target_server_ip:/path_to_target_directory/
このようにして、ローカルディレクトリ内のすべてのファイルがリモートディレクトリにコピーされます。
Q#8)WindowsでSCPを使用できますか?
回答: はい、WindowsでSCPを使用できます。ただし、LinuxやMacとは異なり、Windowsには事前にダウンロードされていないため、Windowsの場合は、SCPソフトウェアを個別にインストールする必要があります。
SCP for Windowsを含むPutty(Putty SCP(PSCP)と呼ばれるソフトウェア)をダウンロードするか、WinSCP(Windows Secure Copy)をダウンロードできます。PSCPクライアントはWindowsコマンドプロンプトから直接実行されます。WindowsでSCPを使用するための他のソフトウェアもあります。 。
Q#9)複数のファイルにSCPを使用するにはどうすればよいですか?
回答: SCPを使用してローカルホストからリモートホストに複数のファイルをコピーする場合:
scp file1 file2 UserName@TargetHost:TargetDirectoryPath
SCPを使用してリモートホストからローカルホストの現在のディレクトリに複数のファイルをコピーする場合:
scp UserName@SourceHost:SourceDirectoryPath{file1, file2}
Q#10)SCPとSFTPの違いは何ですか?
回答: SCPはセキュアコピープロトコルです。 SFTPはセキュアファイル転送プロトコルです。どちらもTCPポート22を使用し、SSHメカニズムで実行されます。ただし、仕様や機能は異なります。
SCPはデータのみを転送しますが、SFTPはファイル転送に加えて、ファイルアクセスおよびファイル管理機能も実行します。 SFTPを使用すると、リモートディレクトリの一覧表示やファイルの削除などの操作を実行できます。ただし、SCPは、サーバー間でのファイルとディレクトリのコピーのみを許可します。
SCPでのファイル転送速度は、ファイル転送により効率的なアルゴリズムを使用しているため、SFTPよりも高速です。
.epsファイルを開く方法
SFTPでは、コマンドラインクライアントから中断されたファイル転送を再開できます。しかし、SCPにはこの機能はありません。
SFTPはGUIコンポーネントを提供しますが、SCPにはそれがありません。
Q#11)ファイルを安全にコピーするためのWindowsのSCPコマンドとは何ですか?
回答: Windowsコマンドプロンプトを開き、Windowsローカルマシンからサーバー(Linuxサーバーの場合もあります)にファイルを安全にコピーするための以下のコマンドを実行します。
pscp filepath userid @ target_server_ip:target_path
例: pscp c: desktop sample.txt userxyz@192.162.x.x:/tmp/foo/sample.txt
このコマンドを実行するには、PSCPがインストールされている必要があります。
Q#12)SCPは安全ですか?
回答: はい、SCPは安全です。データ転送にSSH(Secure Shell Protocol)メカニズムを使用しているため、SSHが提供するセキュリティの恩恵を受けます。転送中のデータは機密に保たれ、その信頼性も保証されます。
結論
このチュートリアルでは、SCPコマンドを使用して、FTPセッションを開始したり、リモートマシンに明示的にログインしたりせずに、2つのリモートホスト間またはローカルホストとリモートホスト間でファイルを安全にコピーする方法を説明しました。
SCPはデータをコピーするためにSSHメカニズムを採用しているため、転送中のデータは暗号化されて保護されます。認証にはパスワードまたはキーが必要です。 RCP(リモートコピープロトコル)またはFTP(ファイル転送プロトコル)とは対照的に、SCPは、システム間で交換されるファイルとパスワードの両方を暗号化して、ネットワーク上のスヌーピングを保護します。