Jag tittade runt på andra frågor här och på olika ”scp-användning” -handledning om Internet, men jag kan inte ordna vad som är fel.
Jag använder Linux Mint och jag försöker lista ut hur scp fungerar.
Jag har en fil file.ext (på min dator) i katalogen / home / name / dir /
Jag ansluter till en fjärrmaskin som använder ssh , som:
ssh -p 2222 username@domain
det frågar mig lösenordet och skalet visas:
username@domain ~ $
nu, om jag ger kommandot (innan jag körde ssh var jag i den lokala katalogen / home / name / dir ):
scp -r -P 2222 file.ext username@domain
output är:
cp: cannot stat ‘file.ext’: No such file or directory
Samma resultat om jag istället för file.ext skriver hela sökvägen
scp -r -P 2222 /home/name/dir/file.ext username@domain
Dessutom sa serveradministratören att jag ska ladda upp filen till min fjärrkatalog (istället för root), som:
scp -r -P 2222 file.ext username@domain:~/
men när jag gör det och trycker på ”Enter” händer ingenting, som om skalet väntade på ytterligare inmatning.
Sammanfattning av mina problem:
- cp: ingen sådan fil eller katalog
- skal ”fast” på ~ /
Några förslag?
Kommentarer
Svar
Du måste köra scp kommando från den lokala maskinen, inte på fjärrkontrollen. Du behöver inte ssh alls:
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
Du behöver inte -r:
-r Recursively copy entire directories.
Om du redan är inloggad på fjärrmaskinen och vill kopiera från din lokala, måste du göra se till att din lokala maskin är tillgänglig via internet och har ssh konfigurerat. Jag tror inte att det här är vad du är ute efter, men om det är det, kör bara det här från fjärrkontrollen:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
Kommentarer
- tack. problemet var att jag försökte köra scp inuti ssh-session. nu fungerar det!
Svar
Jag tillhandahåller två metoder för upp- och nedladdningsfil mellan fjärr- och lokalmaskin (jag använder Mac air):
I det här fallet vill jag upp / ner 11.jpeg mellan lokal och fjärrkontroll:
-
Kopiera filer till tjänsten till lokal dir: Du måste vara i lokal bash-terminal för att kunna utföra detta kommando, inte när du är i ssh!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/kopiera filer i lokal dir till fjärrtjänst: du måste också vara i lokal bash-terminal
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx -
För att uppnå samma avsikt när du loggar in på SSH måste du först ställa in “ Systeminställningar > delning > fjärrloggning > alla användare (jag är inte säker på om du måste ställa in för ” alla användare ”, men det fungerar i den här situationen) ”Mac kommer att berätta för dig ” För att logga in på den här datorn på distans, skriv:
ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/**
Detta kommando ovan är för nedladdning av fil från fjärrkontroll till lokalt när du loggar in på ssh, ändra bara de två sökvägarna när du vill ladda upp filen.
Kommentarer
- Slutligen tycker jag Filezilla är förmodligen den mest bekväma i det dagliga arbetet ~ ~
Svar
Använd kommandot scp
Om du vill överföra en mapp, bara zip det först, vi kan unzip det senare.
Från din dator kör du det här:
$ scp your_path_to_the_file/the_file [email protected]:~/
Här är root ditt konto och 10.145.198.100 fjärrserverns IP-adress. Vi kopierar the_file till ~/ -mappen i fjärrkontrollen.
Packa upp fil:
$ unzip the_zip_file.zip -d destination_folder
Kommentarer
- Varför skulle
roothar du till och med SSH-åtkomst på fjärrmaskinen? Det ’ är ganska osäkert. Bättre att använda en vanlig användning och sedansudoför att göra vad root måste göra på den maskinen.
Svar
Om du kör det här scp-kommandot på fjärrmaskinen letar det efter file.ext som en ”lokal” fil, dvs på fjärrmaskinen.
För att kopiera en fil från fjärrmaskinen till den lokala, använd scp -P 2222 username@domain:dir/file.ext localdir (förutsatt att file.ext finns i ~/dir på fjärrdatorn, som i ditt exempel) . Om du kör scp på fjärrmaskinen, vänd ”local” och ”remote”.
Kommentarer
- OP vill att ska kopiera från lokal till fjärrkontroll, se OP ’ titel.
- Oj, jag antar att du ’ har rätt. Men han ’ gör det uppenbarligen bakåt …
Svara
Bara ett litet bidrag, kanske kan det hjälpa nybörjare som jag: sökvägen till fjärrkatalogen ska skrivas så här: username@domain:~/remote_directory
Vad jag vill markera här är att vi alltid ska lägga till att :~/
Svar
Lösning för att kopiera filer från Linux-klient till Linux-server
-
Kontrollera om
sshdkörs på din server med:ps aux | grep sshd -
Om inte, installera
OpenSSHmedsudo apt-get install openssh-server openssh-clienthttps://www.tecmint.com/install-openssh-server-in-linux/ -
Starta om din server och kontrollera att
sshdkörs medps aux | grep sshd -
Om du behöver kan du konfigurera din
/etc/ssh/sshd_config-fil, men det är inte nödvändigt för enkla konfigurationer -
verifiera att th e-portar är öppna med
netcat:nc -v -z 127.0.0.1 22 -
För att kopiera filer från en
Linuxklient till enLinuxklient använder scp enligt följandescp ~/filename.md [email protected]:~/folder/filename.md -
För att verifiera att filen har kopierats använder du
ssh [email protected]och anger ditt lösenord.
Lösning för att kopiera filer från Linux-klient till Windows
-
Det finns flera klienter för att köra SSH servrar på Windows, till exempel:
-
Installera en av ovanstående servrar och se till att port 22 är öppen med
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 -
Jämförelser mellan dessa servrar:
Bitvise SSH-server
-
Ger nästan nära infödda
cmdprompt,powershellprompt, autoslutförande -
Ger ytterligare funktioner för anpassning, om du behöver avancerad användning
-
Användaranpassning för enkla behov är 0. Jag kom igång med det inom 2 minuter efter att ha spenderat mycket tid försöker få
MobaSSHochOpenSSHatt fungera. -
Kopiera filer med scp användning:
scp ~/filename.md [email protected]:/C/Users/username/filename.md -
Gratis för personligt bruk, $ 99 för professionellt bruk. På grund av så många funktioner och bra integration är priset värt pengarna.
MobaSSH:
-
tillhandahåller en Linux skal på Windows där enkla Linux-kommandon som
ls,cp,find, etc., arbete, liknandeMINGW64 -
du kan komma åt
cmdochpowershelldirekt genom att skrivacmdellerpowershell -
Unicode-stöd är dåligt. Kodningen är inte korrekt. Till exempel om du försöker starta
Pythontolk, kommer det att krascha. Du måste ändra kodningen manuellt med ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001set PYTHONIOENCONDING=utf-8och sedan starta Python-prompten -
Det fantastiska med MobaSSH är att det har ett mycket enkelt användargränssnitt och
scpochsshoch integrerade väl. Så fungerar för enkla användningsfall -
För att kopiera filer från en Linux-klient till en Windows-server som kör
MobaSSH: användscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.mdDetta beror på attMobaSSHär baserat på Cygwin och dess enheter är mappade på samma sättcygwin– s-enheter mappas.
Använd virtuella datorer från Microsoft med OpenSSHv6.7 installerad från https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 är redan installerat.
-
Det är väldigt buggigt och du måste anpassa det kraftigt.
-
Färdigställande av kommandot fungerar inte
-
Det lämnar tomma mellanslag när du flyttar markören på terminalen
-
Python fungerar inte
-
Senare versioner av OpenSSH, kan ha förbättrats på det. Dessutom verkar MS göra OpenSSH tillgängligt via ” Valfria funktioner ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
-
Svar
Om du råkar vara på OSX …
När jag försökte köra den med användarnamn @ local: / file_directory …
fick jag följande fel:
ssh: local: node name or service name not known
Lösning
På min Mac var jag tvungen att göra följande för att ställa in lokal ssh:
Systeminställningar -> Internet & Nätverk -> Delning -> AKTIVERA Fjärrinloggning
Detta gav sedan användarnamnet @ ip-adress.
Svar
Jag hade samma problem idag på MAC.
Skriv följande kommando:
scp /local-file-path/ /-remote-location-path/
localuser@machineA: ssh -p 2222 username@domain(för att indikera att du kör ssh-kommandot som lokalanvändare på maskinA)scp, fjärr -sidan måste alltid innehålla kolon (t.ex.remotehost:/tmp), annars gör det bara en vanlig kopia (scp /tmp/foo.txt example.comkopierar/tmp/foo.txttill en lokal filexample.com)-rflagga, eftersom detta inte behövs för att kopiera enstaka filer (det ’ används för att rekursivt kopiera kataloger)