![2 つの VM 間の SCP ファイル](https://rvso.com/image/1345309/2%20%E3%81%A4%E3%81%AE%20VM%20%E9%96%93%E3%81%AE%20SCP%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB.png)
仮想マシンが 2 つあります。1 つ目の仮想マシンにはソース ファイルが保存されています。2 つ目の仮想マシンには bash スクリプトがあり、ソースから 2 つ目の仮想マシンにファイルをコピーする必要があります。
これをBashで実行するにはどうすればよいですか?
スクリプトが 3 番目のマシンで実行されているときに、Bash で 1 番目の仮想マシンから 2 番目の仮想マシンにファイルを SCP することは可能ですか? 可能であれば、その方法を教えてください。
答え1
それは可能です (両方のホストが SSH をリッスンしていて、最初のリモート ホストが 2 番目のホストを見ることができる限り)。試してみませんか?
scp remote1:/path/to/file remote2:/path/to
これらのホストの両方に対してユーザー名とパスワードを入力する必要がある場合があります (ユーザー名がマシンごとに異なる場合)。
エージェント転送を有効にしてエージェントベースの認証を使用する場合は、パスワードを入力する必要はありません (これが私が推奨する作業方法です)。
これは Bash (または仮想マシン) とは何の関係もなく、どのシェルでも動作するはずであることに注意してください。
答え2
これを行う通常の方法は、リモート マシンの 1 つに ssh で接続し、そこから scp を発行することです。
#3rd-vm> ssh 2nd-vm
#2nd-vm> scp file 1st-vm:~/
答え3
3 台目のマシンを介してブリッジする必要がある場合は、次のように ssh で実行できます。
ssh remote1 cat file | ssh remote2 'cat > file'
または tar の場合:
ssh remote1 tar cf - path/to/copy | ssh remote2 tar xf - -C path/to/dest