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
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: 
- 
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 - 
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 
rootmá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ésudodě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
- 
Zkontrolujte, zda na vašem serveru běží
sshd, pomocí:ps aux | grep sshd - 
Pokud ne, nainstalujte
OpenSSHpomocísudo apt-get install openssh-server openssh-clienthttps://www.tecmint.com/install-openssh-server-in-linux/ - 
Restartujte server a ověřte, zda
sshdběží pomocíps aux | grep sshd - 
Pokud potřebujete, můžete svůj
/etc/ssh/sshd_configsoubor nakonfigurovat, ale pro jednoduché konfigurace to není nutné - 
ověřit, že th Porty jsou otevřené pomocí
netcat:nc -v -z 127.0.0.1 22 - 
Chcete-li kopírovat soubory z
LinuxklientLinuxklient používá scp taktoscp ~/filename.md [email protected]:~/folder/filename.md - 
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
- 
Existuje několik klientů pro provozování SSH servery v systému Windows, například:
 - 
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=22netsh 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=22netsh advfirewall set allprofiles state off - 
Srovnání těchto serverů:
Server Bitvise SSH
- 
Poskytuje téměř téměř nativní
cmdvýzvu,powershellvýzvu, automatické doplňování - 
Poskytuje další možnosti přizpůsobení, pokud potřebujete pokročilé použití.
 - 
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
MobaSSHaOpenSSH. - 
Kopírování souborů pomocí scp použití:
scp ~/filename.md [email protected]:/C/Users/username/filename.md - 
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:
- 
poskytuje Linux shell ve Windows, kde jednoduché příkazy Linuxu, jako
ls,cp,findatd., práce, podobně jakoMINGW64 - 
máte přístup k
cmdapowershellpřímo zadánímcmdnebopowershell - 
Podpora Unicode je špatná. Kódování není správné. Pokud se například pokusíte spustit
Pythontlumočníka, dojde k chybě. Budete muset změnit kódování ručně pomocí ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001set PYTHONIOENCONDING=utf-8a poté spuštění výzvy Pythonu - 
Na MobaSSH je skvělé to, že má velmi jednoduché uživatelské rozhraní a
scpassha integrovány dobře. Bude to tedy fungovat pro jednoduché případy - 
Kopírování souborů z klienta Linux na server Windows se spuštěním
MobaSSH: použijtescp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.mdDůvodem je, žeMobaSSHje založen na Cygwinu a jeho disky jsou mapovány stejným způsobemcygwin– 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.
- 
Je to velmi buggy a budete jej muset hodně přizpůsobit.
 - 
Dokončení příkazu nefunguje
 - 
Při přesunu kurzoru na terminál ponechá mezery
 - 
Python nefunguje
 - 
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/ 
localuser@machineA: ssh -p 2222 username@domain(k označení, že spouštíte příkaz ssh jako localuser na počítači A)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.comzkopíruje/tmp/foo.txtdo místního souboruexample.com)-rpříznak, protože to není nutné pro kopírování jednotlivých souborů (‚ se používá rekurzivně ke kopírování adresářů)