私とリモートサーバーの間にLinuxジャンプボックスがあります。 scpを使用してこれを行う方法に関する投稿をいくつか見ましたが(例: ここ )、Windowsボックスを使用しているため、状況が少し異なります。 2つの間のゲートウェイとしてサーバーをセットアップして、ローカルのWindowsマシンからファイルをコピーしたいと思います。中間サーバーを介してマルチホップを実行できるはずです。だからこのようなもの:
A-> B-> C
ファイルをBにコピーしてから、Bにログインして、ファイルを再度コピーしたくありません。いくつかのファイルでpscpを実行して、それらをコピーできるようにしたいと思います。
これを行う最良の方法は、最初に中間サーバー(図のサーバーB)へのトンネルを確立することであることがわかりました。次に、このリンクを介してpscpします。私がしたことを正確にステップスルーします。
1)PuTTYでserverBへのSSH接続を作成します
2)この接続では、ポート2222(必要に応じて別のポートを選択できます)からポート22のserverCに接続するトンネルを作成します。
3)Windowsでコマンドウィンドウを開きます。マシンのPuTTY/pscpがインストールされている場所に移動します(まだパス上にない場合)
4)次のコマンドを入力します({}の値を独自の値に置き換えます)。
c:\ PuTTY> pscp -P 2222 -pw {myPasswordOnRemoteMachine} c:\ dev\fileIWantToCopy.txt {myusername} @ 127.0.0.1:/ tmp
5)リモートmachineCでは、ファイルは/ tmpディレクトリにある必要があります
この問題に対して私が見つけた最も簡単な解決策は、pscpをまったく使用しないことでした。 WinSCP を使用してファイルをコピーします。
セッションページに最終的なサーバーアドレス(つまり、質問のサーバー「C」)を入力し、SCPを選択します。
[詳細...]をクリックします。 [接続]> [トンネル]に移動します。ここにジャンプサーバー情報を入力します(つまり、サーバー 'B')。
キーファイルまたはパスワードのいずれかを使用してログインするだけで、トンネルに接続されます。
私のさらに複雑な状況:A-> B-> C-> D-> E
I used PuTTY and FileZilla
A my Windows machine,
B and C are gateways (very limited functionality)
D is the first Linux Machine and
E is the target Linux Machine
I use PuTTY to:
ssh into B (w/username password) (IP of B is predefined in PuTTY) then
ssh into C (w/username password) then manually
ssh into D (w/username password) then manually
ssh into E (at least this uses pubic key login so no uid/password!)
Once this is setup I then add tunnel to the IP of the final machine E in PuTTY thus:
L7777 172.123.124.125:22
OK now fire up FileZilla:
File > SiteManager:
Setup new connection to:
Host: 127.0.0.1 Port: 7777
Protocol SFTP
Ask for password...
Connect!