以前は、scp
(単純に)リモートシステム間でファイルをコピーするために呼び出されたときの動作方法は非常に不便でした。たとえば、
scp user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
scp
最初ssh
にremote1でセッションを開き、次にscp
そこからremote2に実行します。これが機能するには、remote1のremote2の認証情報を設定する必要があります。
代わりに、それを行う最新の方法(「モダン」は数年前に実装されただけで、おそらく誰もが-3
-capableを持っているわけではないscp
ため)には2つのステップが必要です。最初に必要な手順は~/.ssh/config
、次のように、remote1とremote2の両方への接続のすべてのオプションをセットアップすることです。
Host remote1.example.org
Port 2222
IdentityFile /path/to/host1-id_rsa
Host remote2.example.org
Port 6969
IdentityFile /path/to/host2-id_rsa
それは、コマンドに必要なすべてのオプションを渡すことが可能となり、このような曖昧せず:例えば、我々はCLIに言っていた場合は、ポート2222を使用して上記の構成せずに、我々が参照したかどうかは不明であったであろうREMOTE1またはしREMOTE2、および暗号化キーを含むファイルについても同様です。このようにして、CLIは整然としたシンプルなままです。
次に、-3
次のようにオプションを使用します。
scp -3 user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt
-3
オプションは、指示scp
コマンドは、それが転送にサードパーティ製であっても、発行されているPC経由でトラフィックをルーティングします。この方法では、認証資格情報は発行元のPC、つまりサードパーティにのみ存在する必要があります。