GNU/Linux >> Linux の 問題 >  >> Linux

リモート マシンに ssh した後、scp でローカルに戻すにはどうすればよいですか?

sshd があるとすると ローカル マシンで実行されている場合、それは可能であり、発信 IP アドレスを知る必要はありません。 SSH ポート フォワーディングが有効になっている場合は、既に ssh 接続を開いている場合でも、それを終了せずに安全なトンネルを開くことができます。

あるサーバーへの ssh 接続があるとします:

local $ ssh [email protected]
Password:
remote $ echo abc > abc.txt  # now we have a file here

さて、そのファイルをローカル サーバーにコピーして戻す必要がありますが、何らかの理由で新しい接続を開きたくないのです。 OK、Enter ~C を押して ssh コマンドラインを取得しましょう (入力、チルダ、大文字の C):

ssh> help
Commands:
      -L[bind_address:]port:host:hostport    Request local forward
      -R[bind_address:]port:host:hostport    Request remote forward
      -D[bind_address:]port                  Request dynamic forward
      -KR[bind_address:]port                 Cancel remote forward

これは通常の -L/R/D と同じです。 オプション。 -R が必要です 、だから Enter ~C にヒットします もう一度入力してください:

ssh> -R 127.0.0.1:2222:127.0.0.1:22
Forwarding port.

ここでは、リモート サーバーのポート 2222 をローカル マシンのポート 22 に転送します (ここで、ローカル SSH サーバーをポート 22 で開始する必要があります。他のポートでリッスンしている場合は、22 の代わりにそれを使用してください)。

scp を実行するだけです リモート サーバー上でファイルをリモート サーバーのポート 2222 にコピーします。このポートはローカル マシンのポート 22 にマップされます (ローカルの sshd 実行中です)。

remote $ scp -P2222 abc.txt [email protected]:
[email protected]'s password:
abc.txt                   100%    4     0.0KB/s   00:00

これで完了です!

remote $ exit
logout
Connection to example.com closed.
local $ cat abc.txt
abc

トリッキーですが、本当にできない場合は scp を実行するだけです


SUでのこのワンライナーソリューションは、受け入れられている回答よりもはるかに簡単であることがわかりました。ローカルIPアドレスに環境変数を使っているので、事前にわからないというOPの要望にも応えられると思います。

それに基づいて、ファイルを「ダウンロード」する bash 関数があります (つまり、SSH セッションからローカル マシン上の設定された場所にプッシュします)

function dl(){
    scp "$1" ${CLIENT_IP%% *}:/home/<USER>/Downloads
}

これで dl somefile.txt を呼び出すことができます リモートと somefile.txt に SSH 接続している間 ローカルのダウンロード フォルダに表示されます。

エクストラ:

  • RSA キー (ssh-copy-id) を使用してパスワード プロンプトを回避します
  • ローカルの bashrc が scp 呼び出しで供給されないようにするこのトリックを見つけました

注:これには、リモートからローカル マシンへの SSH アクセスが必要です (これはよくあることですか?)


Linux
  1. Ssh – Sshを使用してファイルをローカルシステムにコピーし直しますか?

  2. リモートサーバーからローカルマシンにファイルをコピーする方法は?

  3. 中間マシンを介してScpする方法は??

  1. SCP Linuxコマンド–リモートからローカルへのSSHファイル転送方法

  2. リモート コマンドの出力をローカル クリップボードにコピーするにはどうすればよいですか?

  3. SSH 経由でローカルの Hyper-V 仮想マシンに接続する方法を教えてください。

  1. すでに転送されたSshキーをTmuxに転送する方法は?

  2. リモート SSH セッションからローカル クリップボードにデータを送信する方法

  3. サーバーに ssh 接続するときに bash を起動するにはどうすればよいですか?