SCP を使用して Linux でファイルを安全に転送する方法

SCP を使用して Linux でファイルを安全に転送する方法

ファイルをリモート Linux サーバーに転送する場合、いくつかのオプションがあります。最善の方法の 1 つは、セキュア コピー (SCP) と呼ばれるプログラムを使用することです。SCP は、SSH プロトコル上で実行され、ネットワークを介してリモート システムにファイルをすばやく転送します。このチュートリアルでは、Linux で SCP を使用してファイルを安全に転送する方法を示します。

SSH の設定

リモート サーバーに SSH サーバーをインストールする必要があります。Linux で最も一般的なのは OpenSSH サーバーです。インストールするには、次のコマンドのいずれかを実行します。

# Debian/Ubuntu-based serversudo apt install ssh

# Fedorasudo dnf install openssh

Scp Transfer Linux 01 Sshのインストール

ディストリビューションによっては、一部のソフトウェア ファイアウォールを介して SSH を許可する必要がある場合があります。Ubuntu ではこの問題は存在しませんが、Fedora では次のコマンドも実行する必要があります。

sudo firewall-cmd --add-service=ssh --permanentsudo firewall-cmd --reload

Scp Transfer Linux 02 Fedora ファイアウォールを有効にする

SSH 経由でシステムに接続する

SSH 経由で接続する前に、リモート サーバーの IP アドレスを調べる必要があります。グラフィカル サーバーでは、IP アドレスは [システム設定] の [ネットワーク] アプレットに表示されます。ほとんどのサーバーでipは、ターミナルでコマンドを使用する必要があります。

ip addr

Scp転送Linux 04 IPアドレスの確認

出力で、ネットワーク インターフェイスがシステムに接続されている方法に応じて、inetunderethXまたはで始まる行を探します。enpXsy私の場合、192.168.68.108 です。

SSH 接続をテストするには、別の Linux マシンに移動して次のように入力します。

ssh user@remote.machine.ip.address

「user」をサーバーの実際のユーザー名に変更します。

Scp Transfer Linux 05 リモートサーバーへの接続

そのアカウントのパスワードを入力してください。「ホストの信頼性を確立できない」という質問があった場合は、単に「はい」と答えてください。これは、なりすましではなく実際のサーバーに接続していることを確認するためのセキュリティ チェックです。サーバーに直接ログインしたときに表示されるのと同じプロンプトがクライアント システムに表示されるはずです。これは、接続が成功したことを意味します。また、次のステップに進む前に、最大限のセキュリティを確保するために SSH 接続を構成するか、2 要素認証をセットアップする必要があります。

SCP を使用してファイルを転送する

SSH 接続をテストしたので、2 台のマシン間でファイルのコピーを開始します。コマンドを使用して安全なコピーを実現しscpます。scpコマンドの基本的な形式は次のとおりです。

scp /PATH/TO/FILE USER@IP-ADDRESS:PATH/TO/DESIRED/DESTINATION

たとえば、ファイル「backup.tar.gz」をローカル マシンから、IP アドレスが 192.168.68.165 のリモート サーバー上のユーザー「ramces」のホーム ディレクトリにある「backups」フォルダにコピーするには、次のコマンドを使用します。

scp backup.tar.gz ramces@192.168.68.165:~/backups/

Scp Transfer Linux 06 基本コピー

を使用して接続する場合と同様にssh、パスワードの入力を求められます。コマンドで指定されたように、ユーザー名の入力を求めるプロンプトは表示されません。

次のようなワイルドカードも使用できます。

scp *.tar.gz ramces@192.168.68.165:~/backups/

Scp Transfer Linux 07 Glob マッチング コピー

リモート サーバーからローカル マシンにファイルをコピーするには、パラメーターを逆にします。

scp ramces@192.168.68.165:~/backups/backup.tar.gz. /

Scp Transfer Linux 08 逆コピー

コマンドの末尾にあるドットに注意してください。cp標準またはmvコマンドと同様に、「現在のディレクトリ」を意味します。必要に応じて、他のディレクトリを簡単に指定できます。

scp -r ramces@192.168.68.165:~/backups/ backups-from-server/

ワイルドカードも同様です:

scp ramces@192.168.68.165:~/backups/*.txz. /

ディレクトリをリモート サーバーに再帰的にコピーするには、次の-rオプションを使用します。

scp -r backups/ ramces@192.168.68.165:~/backups/

Scp Transfer Linux 09 再帰コピー

ディレクトリの再帰コピーをリモート サーバーからローカル マシンにコピーするには、次のコマンドを使用します。

scp -r ramces@192.168.68.165:~/backups/. /

Scp Transfer Linux 10 逆再帰コピー

SCP でのファイル転送の圧縮

基本的なコピーとは別に、これらのファイル転送中の SCP の動作を変更することもできます。たとえば、-Cフラグを使用して、SCP がリモート クライアントに送信するデータを圧縮できます。

scp -C backup.tar.gz ramces@192.168.68.165:/home/ramces/

このオプションは、SCP プログラムを介して送信される各データ パケットを圧縮することによって機能します。そのため、帯域幅が制限された接続を使用していて、ファイルをリモート サーバーに確実に送信したい場合、これは非常に便利です。

Scp Transfer Linux 11 データ圧縮コピー

上記のオプションと同様に-C、フラグと一緒に使用-rして、ファイルを再帰的に圧縮してリモート マシンに転送することもできます。たとえば、次のコマンドは、リモート サーバーから「backup.tar.gz」ファイルを圧縮して取得します。

scp -Cr ramces@192.168.68.165:/home/ramces/backups /home/ramces/

Scp Transfer Linux 12 逆データ圧縮コピー

SCP によるデータ転送の最適化

ほとんどの場合、SCP はすべてのファイル転送に AES-128 暗号化アルゴリズムを使用しようとします。ただし、この特定のアルゴリズムが転送するファイルに適していない場合があります。

それを知っていれば、特定の転送の暗号アルゴリズムを直接変更することで、SCP をさらに最適化して保護することができます。これを行うには、-cフラグの後に使用する暗号を使用する必要があります。

たとえば、次のコマンドは、AES-256 を使用して「backup.tar.gz」ファイルをリモート サーバーに転送します。

scp -c aes256-ctr. /backup.tar.gz ramces@192.168.68.165:/home/ramces/

Scp Transfer Linux 13 デフォルトの暗号を変更

さらに、この-cオプションを使用すると、特定のファイル転送に使用する暗号のリストを提供することもできます。たとえば、次のコマンドは、「backup.tar.gz」ファイルをリモート サーバーに転送する際に、AES-192 と AES-256 の両方を使用します。

scp -c aes192-ctr,aes256-ctr. /backup.tar.gz ramces@192.168.68.165:/home/ramces/

Scp Transfer Linux 14 暗号設定リストの作成

SCP での帯域幅使用の制限

ファイル パケットを圧縮すると、ネットワーク状態が悪い場合に SCP を使用するのに役立ちますが、転送中にプログラムが使用する帯域幅を制限することもできます。これは、従量制接続を使用していて、SCP がネットワーク帯域幅を支配したくない場合に役立ちます。

プログラムの実効帯域幅を制限するには、-lフラグを使用し、その後に希望する上限をキロビット/秒 (Kb/s) で指定する必要があります。たとえば、次のコマンドを実行すると、「backup.tar.gz」ファイルが 1,600 Kb/s の実効帯域幅でリモート サーバーに転送されます。

scp -l 1600. /backup.tar.gz ramces@192.168.68.165:/home/ramces/

Scp Transfer Linux 15 コピー中の帯域幅制限

SCP を使用したリモートからリモートへの転送

SCP はファイル転送のみを処理し、ローカル マシンとリモート マシンを区別しないため、ローカル ファイルをリモート サーバーにコピーしたり、その逆にコピーしたりするだけでなく、SCP を使用してローカル マシンから複数のリモート サーバーを管理することもできます。

2 つのリモート サーバー間で転送するには、それらの各マシンのユーザー名とアドレスを明示的に指定する必要があります。たとえば、次のコマンドを実行すると、2 つのリモート サーバー間で「remote-backup.tar.gz」ファイルが転送されます。

scp ramces@192.168.68.108:/home/ramces/remote-backup.tar.gz ramces@192.168.68.165:/home/ramces/

Scp 転送 Linux 16 リモートからリモート コピーへ

SCP でのプロキシの使用

デフォルトでは、SCP は異なるホスト間でファイルを転送するときは常にローカル マシンの IP アドレスを使用します。これは通常の状況ではまったく問題ありませんが、ローカル ネットワークが SCP アクティビティを制限している場合は問題になる可能性があります。この問題に対処する簡単な方法の 1 つは、ローカル接続を SSH プロキシ経由で渡すことです。

これを行うには、-oフラグの後にProxyCommandオプションを使用する必要があります。これにより、SCP コマンドを実行する新しいマシンへの基本的な SSH 接続を作成できます。たとえば、次のコマンドを実行すると、リモート マシンで新しい SSH プロキシが作成され、それを使用して「backup.tar.gz」ファイルが転送されます。

scp -o "ProxyCommand ssh ramces@192.168.68.108 nc %h %p". /backup.tar.gz ramces@192.168.68.165:/home/ramces/

Scp 転送 Linux 17 Ssh プロキシ バイパス

SCP のデフォルト ポートの変更

基本的な SSH プロキシを作成する以外に、SCP のデフォルト ポートを変更することもできます。これは、Linux サーバーを保護していて、デフォルトのポートを公開したくない場合に特に役立ちます。

別のポートで SCP を使用するには、-Pフラグの後に使用するポート番号を指定する必要があります。たとえば、次のコマンドは、「バックアップ」ディレクトリを再帰的にコピーし、ポート 2222 を使用してリモート サーバーに接続します。

scp -r -P 2222. /backup ramces@192.168.68.165:/home/ramces/

カスタムポートを使用したScp Transfer Linux 18

SCP 静音モードの使用

最後に、SCP コマンドから端末出力を完全に削除することもできます。これは、マシンで実行する非対話型スクリプトを作成する場合に特に便利です。それだけでなく、cronjob を作成して秘密 SSH キーをサーバーに転送することで、このプロセスを完全に自動化することもできます。

-q静かな SCP 転送を作成するには、フラグを使用する必要があります。たとえば、次のコマンドは、「backup.tar.gz」ファイルをサイレント モードでリモート サーバーに転送します。

scp -q. /backup.tar.gz ramces@192.168.68.165:/home/ramces/

SCP転送Linux 19クワイエットモード

よくある質問

SCP でのリモートからリモートへの転送が機能しません。どうすればこれを修正できますか?

この問題は、リモート マシンの構成ファイルの 1 つでブロックされたポートが原因である可能性が最も高いです。この問題を解決するには、両方のマシンで SSH のデフォルト ポートが開いていることを確認してください。

この問題は、リモート マシンの 1 つが CG-NAT 接続の背後にあることが原因である可能性もあるため、リモート マシンへの外部接続は適切に解決されません。これを修正するには、Yggdrasil などの仮想 LAN プログラムを使用して、CG-NAT をパンチスルーできるようにする必要があります。

SCP プロキシを実行すると、リモート ホストが接続を閉じました。私に何ができる?

この問題は、プロキシ マシンの問題が原因である可能性が最も高いです。SSH プロキシを適切に開始するには、使用するマシンに OpenSSH サーバーと netcat があることを確認してください。これらのプログラムを Ubuntu にインストールするには、次のコマンドを実行しますsudo apt install ssh netcat

SCP で利用可能なすべての暗号を知ることは可能ですか?

デフォルトでは、SCP プログラムは暗号化機能を SSH プロトコルに大きく依存しています。そのため、SSH プログラムを使用して、SCP と共に使用できる暗号のリストを出力できます。たとえばssh -Q ciphers、マシンで使用可能なすべての暗号の簡単なリストを印刷するために実行できます。

画像クレジット: Unsplash . Ramces Redによるすべての変更とスクリーンショット。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です