1. ホーム
  2. scp

[解決済み] 第二のリモートホストで scp する方法

2023-02-20 09:59:27

質問

私のローカルマシンから、remote1 ホストを経由して remote2 ホストから直接ファイルを SCP する方法があるのでしょうか。

ネットワークは、remote1 ホストから remote2 ホストへの接続しか許可しません。また、remote1 ホストも remote2 ホストも私のローカル マシンへの scp はできません。

のようなものがあるのでしょうか。

scp user1@remote1:user2@remote2:file .

最初のウィンドウ ssh remote1 そして scp remot2:file . .

2つ目のシェル scp remote1:file .

最初のウィンドウ rm file; logout

これらのステップをすべて行うスクリプトを書くこともできますが、もし直接的な方法があるのなら、それを使いたいのです。

ありがとうございます。

EDITです。 SSHトンネルを開くようなことを考えているのですが、どこにどのような値を入れればいいのか迷っています。

今のところ、アクセスするために remote1 にアクセスするために、私は以下のように $HOME/.ssh/config を使用しています。

Host remote1
   User     user1
   Hostname localhost
   Port     45678

一度 remote1 にアクセスすると remote2 にアクセスするには、標準のローカルDNSとポート22です。に何を置くべきでしょうか? remote1 に置くか localhost ?

どのように解決するのですか?

1 つのコマンドでファイルを直接コピーする方法は知りませんが、ポート転送トンネルを開いておくだけのためにバックグラウンドで SSH インスタンスを実行することを譲歩できるなら、1 つのコマンドでファイルをコピーすることができます。

このように

# First, open the tunnel
ssh -L 1234:remote2:22 -p 45678 user1@remote1
# Then, use the tunnel to copy the file directly from remote2
scp -P 1234 user2@localhost:file .

として接続することに注意してください。 user2@localhost として接続し、実際の scp コマンドで、最初の ssh へのコネクションを転送するために listen しているからです。 remote2 . また、その後のファイルコピーのたびに最初のコマンドを実行する必要はなく、単に実行したままにしておくことができることにも注意してください。