web-dev-qa-db-ja.com

中間ゲートウェイサーバーホップを介してpscpを使用してファイルをコピーする方法

私とリモートサーバーの間にLinuxジャンプボックスがあります。 scpを使用してこれを行う方法に関する投稿をいくつか見ましたが(例: ここ )、Windowsボックスを使用しているため、状況が少し異なります。 2つの間のゲートウェイとしてサーバーをセットアップして、ローカルのWindowsマシンからファイルをコピーしたいと思います。中間サーバーを介してマルチホップを実行できるはずです。だからこのようなもの:

A-> B-> C

ファイルをBにコピーしてから、Bにログインして、ファイルを再度コピーしたくありません。いくつかのファイルでpscpを実行して、それらをコピーできるようにしたいと思います。

5
Scott

これを行う最良の方法は、最初に中間サーバー(図のサーバーB)へのトンネルを確立することであることがわかりました。次に、このリンクを介してpscpします。私がしたことを正確にステップスルーします。

1)PuTTYでserverBへのSSH接続を作成します

enter image description here

2)この接続では、ポート2222(必要に応じて別のポートを選択できます)からポート22のserverCに接続するトンネルを作成します。

enter image description here

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ディレクトリにある必要があります

4
Scott

この問題に対して私が見つけた最も簡単な解決策は、pscpをまったく使用しないことでした。 WinSCP を使用してファイルをコピーします。

  1. セッションページに最終的なサーバーアドレス(つまり、質問のサーバー「C」)を入力し、SCPを選択します。 enter image description here

  2. [詳細...]をクリックします。 [接続]> [トンネル]に移動します。ここにジャンプサーバー情報を入力します(つまり、サーバー 'B')。 enter image description here

  3. キーファイルまたはパスワードのいずれかを使用してログインするだけで、トンネルに接続されます。

1
Scott

私のさらに複雑な状況: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!
0
d586