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

SSH 構成
リモート サーバーに、SSH サーバーをインストールする必要があります。 Linux で最も一般的なのは OpenSSH サーバーです。 インストールするには、次のコマンドのいずれかを実行します。
# Debian/Ubuntu ベースのサーバー sudo apt install ssh # Fedora sudo dnf install openssh

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

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

出力で、で始まる行を見つけます INET 以内に イーサX أو enpXsy 、ネットワーク インターフェイスがシステムに接続する方法によって異なります。 私の場合、それは 192.168.68.108.
テストする SSH接続 、デバイスに移動 Linux 異なるタイプ:
ssh [メール保護]
変化する "ユーザー" 私に اسمالمستخدم 実際のサーバー。

入力 パスワード このアカウント、そしてあなたは働いています。 について質問があれば 「ホストの信憑性を証明することはできません。」 と答えればいいだけ "はい"。 これは、詐欺ではなく、実際のサーバーに接続していることを確認するように設計されたセキュリティ チェックです。 サーバーに直接ログインしたときに表示されるのと同じプロンプトがクライアント システムに表示されます。これは、接続が成功したことを意味します。 また、最大限のセキュリティを確保するために SSH 接続を構成する必要があります。 二要素認証を設定する 、次のステップに進む前に。
SCP を使用してファイルを転送する
SSH 接続をテストしたので、XNUMX つのデバイス間でファイルのコピーを開始します。 安全なコピーは、scp コマンドを使用して実現されます。 scp コマンドの基本的な形式は次のとおりです。
scp /パス/宛先/ファイル ユーザー@IPアドレス:パス/宛先/希望の/宛先
たとえば、ファイルをコピーするには 「バックアップ.tar.gz」 ローカル マシンからフォルダへ 「バックアップ.tar.gz」 ユーザーのホームディレクトリに 「ラムセス」 アドレスを持つリモートサーバー上 IP 192.168.68.165 、 使用する:
SCPバックアップ.tar.gz [メール保護]:~/バックアップ/

ssh を使用して接続する場合と同様に、パスワードの入力を求められます。 コマンドで指定されているように、ユーザー名の入力を求めるプロンプトは表示されません。
次のようなワイルドカードも使用できます。
scp *.tar.gz [メール保護]:~/バックアップ/

リモート サーバーからローカル マシンにファイルをコピーするには、パラメーターを逆にします。
scp [メール保護]:~/backups/backup.tar.gz ./

末尾のポイントに注目してください。 その意味は 「現在のフォルダ」 、と同様に cp 標準コマンド أو 等 必要に応じて、別のディレクトリを簡単に選択できます。
scp-r [メール保護]:~/backups/サーバーからのバックアップ/
ワイルドカードも同様です:
scp [メール保護]:~/backups/*.txz ./
ディレクトリをリモートサーバーに再帰的にコピーするには、次を使用します オプション -r:
scp -r バックアップ/ [メール保護]:~/バックアップ/

ディレクトリの複製コピーをリモート サーバーからローカル マシンにコピーするには、次のコマンドを使用します。
scp-r [メール保護]:~/バックアップ/ ./

SCP でのファイル転送圧縮
基本的なコピーとは別に、これらのファイル転送中の SCP の動作を変更することもできます。 たとえば、次のタグを使用できます。 -C SCP がリモート クライアントに送信するデータを圧縮するには:
scp -C バックアップ.tar.gz [メール保護]:/ホーム/ラムセス/
このオプションは、SCP 経由で送信される各データ パケットを圧縮することによって機能します。 そのため、帯域幅が制限された接続を使用していて、ファイルをリモート サーバーに確実に送信したい場合、これは非常に便利です。

上記のオプションと同様に、次を使用することもできます -C タグと一緒に -r ファイルを圧縮し、再帰的にリモート マシンに転送します。 たとえば、次のコマンドはファイルを圧縮して復元します 「バックアップ.tar.gz」 私のリモートサーバーから:
scp-Cr [メール保護]:/ホーム/ラムセス/バックアップ/ホーム/ラムセス/

SCP でデータ転送を最適化する
ほとんどの場合、SCP は使用しようとします。 暗号化アルゴリズム AES-128 すべてのファイル転送に対して。 ただし、この特定のアルゴリズムが転送するファイルに適していない場合があります。
これを知っていれば、特定の送信の暗号化アルゴリズムを直接変更することで、SCP をさらに改善して安全にすることができます。 これを行うには、タグを使用する必要があります -c 使用するコードが続きます。
たとえば、次のコマンドはファイルを移動します 「バックアップ.tar.gz」 を使用してリモートサーバーに AES-256:
scp -c aes256-ctr ./backup.tar.gz [メール保護]:/ホーム/ラムセス/

さらに、それはあなたにオプションを提供します -c また、特定のファイルの転送に使用する暗号のリストも提供してください。 たとえば、次のコマンドは両方を使用します。 AES-192 و AES-256 ファイル転送中 「バックアップ.tar.gz」 私のリモートサーバーへ:
scp -c aes192-ctr, aes256-ctr ./backup.tar.gz [メール保護]:/ホーム/ラムセス/

SCP で帯域幅の使用を制限する
ファイル パケット圧縮は、ネットワーク状態が悪い場合に SCP を使用するのに役立ちますが、送信中にプログラムが使用する帯域幅を制限することもあります。 これは、限られた接続を使用していて、SCP がネットワーク帯域幅を占有したくない場合に役立ちます。
プログラムの有効な帯域幅を制限するには、使用する必要があります タグ -l 希望する最大額が続きます 単位はキロビット/秒 (Kb/s)。 たとえば、次のコマンドを実行すると、ファイルが移動されます 「バックアップ.tar.gz」 有効な帯域幅が 1600 Kb/s のリモート サーバーへ:
scp -l 1600 ./backup.tar.gz [メール保護]:/ホーム/ラムセス/

SCPによるテレツーテレ
SCP はファイル転送のみを処理し、ローカル マシンとリモート マシンを区別しないため、ローカル ファイルをリモート サーバーに、またはその逆にコピーする以外に、SCP を使用してローカル マシンから複数のリモート サーバーを管理することもできます。
XNUMX つのリモート サーバー間で転送するには、これらの各マシンのユーザー名とアドレスを明示的に指定する必要があります。 たとえば、次のコマンドを実行すると、ファイルが移動されます 「リモートバックアップ.tar.gz」 XNUMX つのリモート サーバー間でのマイニング:

SCP でプロキシを使用する
デフォルトでは、SCP は XNUMX つの異なるホスト間でファイルを転送するときに、ローカル マシンの IP アドレスを使用します。 これは通常の状況ではまったく問題ありませんが、ローカル ネットワークが SCP アクティビティを制限している場合は問題になる可能性があります。 この問題に対処する簡単な方法の XNUMX つは、ローカル接続を SSH プロキシ経由で渡すことです。
これを行うには、タグを使用する必要があります -o 続いてオプション プロキシコマンド。 これにより、SCP コマンドを実行する新しいデバイスへの基本的な SSH 接続を作成できます。 たとえば、次のコマンドを実行すると、リモート マシンに新しい SSH エージェントが作成され、ファイルが転送されます。 「バックアップ.tar.gz」 それを使用して:

SCP のデフォルト ポートを変更する
基本的な SSH プロキシの作成とは別に、SCP のデフォルト ポートを変更することもできます。 これは、Linux サーバーを保護していて、仮想ポートを公開したくない場合に特に便利です。
別のポートで SCP を使用するには、フラグを使用する必要があります -P 使用するポート番号が続きます。 たとえば、次のコマンドはディレクトリをコピーします "バックアップ" 再帰的にポートを使用してリモートサーバーに接続します 2222:
scp -r -P 2222 ./バックアップ [メール保護]:/ホーム/ラムセス/

SCP 静音モードを使用する
最後に、SCP コマンドから端末出力を完全に削除することもできます。 これは、端末で実行される非対話型スクリプトを作成する場合に特に便利です。 それだけでなく、作成することでこのプロセスを完全に自動化することもできます cronjob と転送 SSH キー あなたのサーバーにプライベート。
静かな SCP トランスポートを作成するには、タグを使用する必要があります -q. たとえば、次のコマンドはファイルを移動します 「バックアップ.tar.gz」 リモートサーバーに静かに:
scp -q ./backup.tar.gz [メール保護]:/ホーム/ラムセス/

よくある質問
Q1. テレポートするリモコンが SCP で機能しません。 どうすればこれを修正できますか?
答え。 この問題は、リモート マシンの構成ファイルの XNUMX つでブロックされたポートが原因である可能性が最も高いです。 これを修正するには、両方のデバイスで SSH のデフォルト ポートが開いていることを確認します。
この問題は、リモート マシンの XNUMX つが CG-NAT 接続の背後にあることによっても発生する可能性があるため、リモート マシンへの外部接続が適切に解決されません。 この問題を解決するには、使用する必要があります VLAN ソフトウェア 、 そのような ユグドラシル 、これにより、通過することができます CG-NAT。
Q2. SCP プロキシをオンにすると、リモート ホストが接続を閉じました。 私に何ができる?
答え。 この問題は、プロキシ マシンの問題が原因である可能性が最も高いです。 SSH エージェントを適切に開始するには、使用するマシンに OpenSSH サーバーと netcat があることを確認してください。 これらのプログラムをインストールするには Ubuntu、 次のコマンドを実行します。 sudo apt で ssh netcat をインストールします。
Q3. SCP で使用可能なすべての暗号を調べることはできますか?
答え。 デフォルトでは、SCP は暗号化機能を SSH プロトコルに大きく依存しています。 このため、SSH スクリプトを使用して、SCP と共に使用できる暗号のリストを出力できます。 たとえば、実行できます ssh -Q 暗号 デバイスで使用可能なすべての暗号の短いリストを出力します。





