Pomocí scp přeneste soubor z místního adresáře X do vzdáleného adresáře Y

Podíval jsem se zde na další otázky a na různé výukové programy „použití scp“ na Internet, ale nedokážu vyřešit, co se děje.

Používám Linux Mint a snažím se přijít na to, jak scp funguje.

Jsem soubor file.ext (na mém počítači) v adresáři / home / name / dir /

Připojuji se k vzdálený počítač pomocí ssh , jako je:

ssh -p 2222 username@domain 

zeptá se mě na heslo a shell zobrazí:

username@domain ~ $ 

teď, když vydám příkaz (před spuštěním ssh jsem byl v místním adresáři / home / name / dir ):

scp -r -P 2222 file.ext username@domain 

výstup je:

cp: cannot stat ‘file.ext’: No such file or directory 

Stejný výsledek, pokud místo file.ext napíšu úplnou cestu

scp -r -P 2222 /home/name/dir/file.ext username@domain 

Správce serveru mi také řekl, že soubor nahraji do svého vzdáleného domovského adresáře (místo root), jako:

scp -r -P 2222 file.ext username@domain:~/ 

, ale když to udělám a stisknu „Enter“, nic se nestane, protože Pokud shell čekal na další vstup.

Shrnutí mých problémů:

  • cp: žádný takový soubor nebo adresář
  • shell „přilepený“ na ~ /

Nějaké návrhy?

Komentáře

  • it ‚ je trochu nejasné, zda je váš problém souvisí pouze s tím, že jste na špatném počítači … mohli byste prosím předřadit každý příkaz hostiteli, na kterém běžíte? např. localuser@machineA: ssh -p 2222 username@domain (k označení, že spouštíte příkaz ssh jako localuser na počítači A)
  • při použití scp, vzdálená strana musí vždy obsahovat dvojtečku (např. remotehost:/tmp), jinak bude stačit obyčejná kopie (scp /tmp/foo.txt example.com zkopíruje /tmp/foo.txt do místního souboru example.com)
  • odebrat -r příznak, protože to není nutné pro kopírování jednotlivých souborů (‚ se používá rekurzivně ke kopírování adresářů)
  • Vydáváte příkaz scp uvnitř relace sshe ? Dalo by to smysl, pokud jste na místním počítači.

Odpověď

Musíte spustit scp příkaz z místního počítače, nikoli na dálkovém ovladači. ssh vůbec nepotřebujete:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

Nepotřebujete ani -r:

 -r Recursively copy entire directories. 

Pokud jste již přihlášeni ke vzdálenému počítači a chcete kopírovat z místního počítače, musíte provést ujistěte se, že je váš místní počítač přístupný přes internet a je nastaven ssh. Nemyslím si, že to je to, o co vám jde, ale pokud ano, spusťte to z dálkového ovladače:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/ 

Komentáře

  • děkuji. problém byl, že jsem se pokoušel spustit scp uvnitř relace ssh. teď to funguje!

odpověď

Poskytuji dvě metody načítání / spouštění souboru mezi vzdáleným a místním počítačem (používám Mac air):

V tomto případě chci nahoru / dolů 11.jpeg mezi místními a vzdálenými:

  1. Zkopírujte soubory ve službě do lokálního adresáře: K provedení tohoto příkazu musíte být v místním terminálu bash, ne když jste v ssh!

    scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/ 

    kopírovat soubory do lokálního adresáře do vzdálená služba: také musíte být v místním terminálu bash

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. Chcete-li dosáhnout stejného záměru při přihlašování k SSH , musíte nejprve nastavit „ Předvolby systému > sdílení > vzdálené přihlášení > všichni uživatelé (nevím, jestli musíte nastavit pro “ všechny uživatele „, ale v této situaci to funguje) „Mac vám řekne “ Chcete-li se k tomuto počítači přihlásit vzdáleně, zadejte:

    ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/** 

Tento příkaz výše slouží ke stažení souboru ze vzdáleného na místní, když se přihlašujete do ssh, stačí změnit dvě cesty, když chcete nahrát soubor.

Komentáře

  • Nakonec zjistím, že Filezilla je pravděpodobně nejvhodnější v každodenní práci ~~

Odpověď

Použijte příkaz scp

Chcete-li přenést složku, stačí zip nejprve to, můžeme unzip později.

Z počítače spusťte toto:

$ scp your_path_to_the_file/the_file [email protected]:~/ 

Zde je root váš účet a 10.145.198.100 je IP adresa vzdáleného serveru. Zkopírujeme the_file do ~/ složky na dálkovém ovladači.

Rozbalte soubor:

$ unzip the_zip_file.zip -d destination_folder 

Komentáře

  • Proč by root máte dokonce přístup SSH na vzdáleném počítači? To ‚ je docela nejisté. Lepší je použít běžné použití a poté sudo dělat cokoli, co má root na tomto stroji.

Odpovědět

Pokud spouštíte tento příkaz scp na vzdáleném počítači, hledá file.ext jako „místní“ soubor, tj. na vzdáleném počítači.

Chcete-li zkopírovat soubor ze vzdáleného počítače do místního, použijte scp -P 2222 username@domain:dir/file.ext localdir (za předpokladu, že file.ext je ve ~/dir na vzdáleném počítači, jako ve vašem příkladu) . Pokud spustíte scp na vzdáleném počítači, obráťte „local“ a „remote“.

Komentáře

  • OP chce kopírovat z lokálního na vzdálené, viz název OP ‚ s.
  • Jejda, myslím, že vy ‚ má pravdu. Ale ‚ to zjevně dělá obráceně …

Odpovědět

Jen malý příspěvek, možná může pomoci začátečníkům jako já: cesta ke vzdálenému adresáři by měla být napsána takto: username@domain:~/remote_directory

Chci zde zdůraznit, že bychom měli vždy přidat, že :~/

Odpověď

Řešení pro kopírování souborů z klienta Linux na server Linux

  1. Zkontrolujte, zda na vašem serveru běží sshd, pomocí: ps aux | grep sshd

  2. Pokud ne, nainstalujte OpenSSH pomocí sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Restartujte server a ověřte, zda sshd běží pomocí ps aux | grep sshd

  4. Pokud potřebujete, můžete svůj /etc/ssh/sshd_config soubor nakonfigurovat, ale pro jednoduché konfigurace to není nutné

  5. ověřit, že th Porty jsou otevřené pomocí netcat: nc -v -z 127.0.0.1 22

  6. Chcete-li kopírovat soubory z Linux klient Linux klient používá scp takto scp ~/filename.md [email protected]:~/folder/filename.md

  7. Chcete-li ověřit, že byl soubor zkopírován, použijte ssh [email protected] a zadejte své heslo.

Řešení pro kopírování souborů z klienta Linux do Windows

  1. Existuje několik klientů pro provozování SSH servery v systému Windows, například:

  2. Nainstalujte jeden z výše uvedených serverů a ujistěte se, že je port 22 otevřený pomocí

    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=UDP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=UDP localport=22 
    netsh advfirewall firewall add rule name="SSH Port 22" dir=in action=allow protocol=TCP localport=22 netsh advfirewall firewall add rule name="SSH Port 22" dir=out action=allow protocol=TCP localport=22 
    netsh advfirewall set allprofiles state off 
  3. Srovnání těchto serverů:

    Server Bitvise SSH

    1. Poskytuje téměř téměř nativní cmd výzvu, powershell výzvu, automatické doplňování

    2. Poskytuje další možnosti přizpůsobení, pokud potřebujete pokročilé použití.

    3. Uživatelské přizpůsobení pro jednoduché potřeby je 0. Začal jsem s ním během 2 minut, poté, co jsem strávil spoustu času snaží se pracovat MobaSSH a OpenSSH.

    4. Kopírování souborů pomocí scp použití: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Zdarma pro osobní použití, 99 $ pro profesionální použití. Vzhledem k tolika funkcím a skvělé integraci stojí cena za peníze.

    MobaSSH:

    1. poskytuje Linux shell ve Windows, kde jednoduché příkazy Linuxu, jako ls, cp, find atd., práce, podobně jako MINGW64

    2. máte přístup k cmd a powershell přímo zadáním cmd nebo powershell

    3. Podpora Unicode je špatná. Kódování není správné. Pokud se například pokusíte spustit Python tlumočníka, dojde k chybě. Budete muset změnit kódování ručně pomocí ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 a poté spuštění výzvy Pythonu

    4. Na MobaSSH je skvělé to, že má velmi jednoduché uživatelské rozhraní a scp a ssh a integrovány dobře. Bude to tedy fungovat pro jednoduché případy

    5. Kopírování souborů z klienta Linux na server Windows se spuštěním MobaSSH: použijte scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Důvodem je, že MobaSSH je založen na Cygwinu a jeho disky jsou mapovány stejným způsobem cygwin – disky jsou mapovány.

    Používejte virtuální počítače od Microsoftu s nainstalovaným OpenSSHv6.7 z https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 je již nainstalován.

    1. Je to velmi buggy a budete jej muset hodně přizpůsobit.

    2. Dokončení příkazu nefunguje

    3. Při přesunu kurzoru na terminál ponechá mezery

    4. Python nefunguje

    5. Pozdější verze OpenSSH se na něm mohou zlepšit. Dále se zdá, že MS zpřístupňuje OpenSSH prostřednictvím “ Volitelné funkce “ https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Odpověď

Pokud jste náhodou na OSX …

Když jsem to zkusil spustit s username @ local: / file_directory …

Dostal jsem následující chybu:

ssh: local: node name or service name not known 

Řešení

Na mém počítači Mac jsem musel provést následující nastavení lokálního ssh:

System Preferences -> Internet & Networking -> Sharing -> POVOLIT Vzdálené přihlášení

Tím bylo zadáno uživatelské jméno @ ip adresa.

Odpověď

Dnes jsem měl stejný problém i na MAC.

Zadejte následující příkaz:

scp /local-file-path/ /-remote-location-path/ 

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *