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?)