リモートサーバーからローカルSSHへ別のリモートサーバーへのscp

リモートサーバーからローカルSSHへ別のリモートサーバーへのscp

現在私のローカルコンピュータに転送したいファイルはserverBにあります。 serverBに接続するには、まずserverAにSSHを接続し、次にserverBにSSHを接続します。 (例:ssh @serverA、次にserverA -> ssh @serverB)

scpを使ってこれを行う最良の方法は何ですか?

答え1

ProxyJumpのオプションが利用可能です~/.ssh/config。からman ssh

-J宛先

まず、ターゲットホストへの接続を作成します。SSH宛先が説明するジャンプホストに接続した後、そこから最終宛先へのTCP転送を設定します。複数のジャンプをコンマで区切って指定できます。指定するショートカットです。プロキシジャンプ構成ガイドライン。コマンドラインで提供される設定ディレクティブは、通常、指定されたジャンプホストではなくターゲットホストに適用されます。ジャンプホストの設定を指定するには、 ~/.ssh/config を使用します。

たとえば、~/.ssh/config次のようになります。

Host serverA
Port 22

Host serverB
Port 22
ProxyJump serverA

sshこれは常にserverBに接続するように指示します。渡すserverAは正常ですsshscpつまり、ssh serverBまたはを入力すると、scp serverB:big_file.txt .ServerAを介してルーティングされることがわかります。 (ただし、公開鍵認証を使用する場合、serverB には必須鍵のローカルコピーが必要です.)

これをしばしば「ジャンプホスト」と呼びますssh。の関連設定オプションは~/.ssh/configですProxyCommand

答え2

一つの方法はピクロシン解決策、他の方法があります。

  1. 何度も必要な場合はお勧めsshfsします。サーバーAそしてscp from local to serverA
  2. 一度だけ必要であれば使用できますのでssh tunnel ご注意ください。これトンネリングのためsshfs
ssh to serverA
sshfs user@serverB:/foldertomount/ ~/mountpoint
scp ~/mountpoint/desiredFile LocalIP:/Path/

関連情報