GNU/Linux >> Znalost Linux >  >> Linux

Jak scp zpět na místní, když jsem již sshed na vzdálený počítač?

Vzhledem k tomu, že máte sshd běží na vašem místním počítači, je to možné a nepotřebujete znát svou odchozí IP adresu. Pokud je povoleno předávání portů SSH, můžete otevřít zabezpečený tunel, i když již máte otevřené připojení ssh, a bez jeho ukončení.

Předpokládejme, že máte ssh připojení k nějakému serveru:

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

OK, nyní musíme zkopírovat tento soubor zpět na náš místní server a z nějakého důvodu nechceme otevírat nové připojení. OK, spusťte příkazový řádek ssh stisknutím Enter ~C (Zadejte, potom vlnovku a poté velké 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

Je to jako běžné -L/R/D možnosti. Budeme potřebovat -R , takže jsme narazili na Enter ~C znovu a zadejte:

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

Zde předáváme port 2222 vzdáleného serveru na port 22 místního počítače (a zde potřebujete, aby byl místní server SSH spuštěn na portu 22; pokud naslouchá na jiném portu, použijte jej místo 22).

Nyní stačí spustit scp na vzdáleném serveru a zkopírujte náš soubor na port 2222 vzdáleného serveru, který je namapován na port 22 našeho místního počítače (kde naše místní sshd běží).

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

Jsme hotovi!

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

Složité, ale pokud opravdu nemůžete stačí spustit scp z jiného terminálu, může pomoci.


Zjistil jsem, že toto jednolinkové řešení na SU je mnohem přímočařejší než přijatá odpověď. Vzhledem k tomu, že pro místní IP adresu používá proměnnou prostředí, myslím, že také vyhovuje požadavku OP neznát ji předem.

na základě toho je zde funkce bash pro "Stažení" souboru (tj. push z relace SSH do nastaveného umístění na místním počítači)

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

Nyní mohu zavolat na dl somefile.txt zatímco SSH vstoupil do dálkového ovladače a somefile.txt se zobrazí v mé místní složce Stažené soubory.

doplňky:

  • K obcházení výzvy k zadání hesla používám klíče rsa (ssh-copy-id).
  • Našel jsem tento trik, abych zabránil získání místního bashrc při volání scp

Poznámka:toto vyžaduje SSH přístup k místnímu počítači ze vzdáleného místa (je to často případ někoho?)


Linux
  1. Příkaz SCP Linux – Jak přenášet soubory SSH ze vzdáleného do místního

  2. Ssh – Zkopírujte soubor zpět do místního systému pomocí Ssh?

  3. Jak mohu zkopírovat výstup ze vzdáleného příkazu do místní schránky?

  1. Jak zkopírovat soubor ze vzdáleného serveru do místního počítače?

  2. Jak předat již předaný klíč Ssh do Tmux?

  3. Jak se připojit k místnímu virtuálnímu počítači hyper-v přes SSH?

  1. Jak Scp přes střední stroj?

  2. Jak odeslat data do místní schránky ze vzdálené relace SSH

  3. Jak začnu v bash, když ssh'dám na můj server?