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
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
-
Zkontrolujte, zda na vašem serveru běží
sshd
, pomocí:ps aux | grep sshd
-
Pokud ne, nainstalujte
OpenSSH
pomocísudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Restartujte server a ověřte, zda
sshd
běží pomocíps aux | grep sshd
-
Pokud potřebujete, můžete svůj
/etc/ssh/sshd_config
soubor 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
Linux
klientLinux
klient 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=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
-
Srovnání těchto serverů:
Server Bitvise SSH
-
Poskytuje téměř téměř nativní
cmd
výzvu,powershell
vý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
MobaSSH
aOpenSSH
. -
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
,find
atd., práce, podobně jakoMINGW64
-
máte přístup k
cmd
apowershell
přímo zadánímcmd
nebopowershell
-
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 -
Na MobaSSH je skvělé to, že má velmi jednoduché uživatelské rozhraní a
scp
assh
a 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.md
Důvodem je, žeMobaSSH
je 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.com
zkopíruje/tmp/foo.txt
do místního souboruexample.com
)-r
příznak, protože to není nutné pro kopírování jednotlivých souborů (‚ se používá rekurzivně ke kopírování adresářů)