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
root
har du till och med SSH-åtkomst på fjärrmaskinen? Det ’ är ganska osäkert. Bättre att använda en vanlig användning och sedansudo
fö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
sshd
körs på din server med:ps aux | grep sshd
-
Om inte, installera
OpenSSH
medsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Starta om din server och kontrollera att
sshd
kö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
Linux
klient till enLinux
klient 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=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
-
Jämförelser mellan dessa servrar:
Bitvise SSH-server
-
Ger nästan nära infödda
cmd
prompt,powershell
prompt, 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å
MobaSSH
ochOpenSSH
att 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
cmd
ochpowershell
direkt genom att skrivacmd
ellerpowershell
-
Unicode-stöd är dåligt. Kodningen är inte korrekt. Till exempel om du försöker starta
Python
tolk, kommer det att krascha. Du måste ändra kodningen manuellt med ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
och sedan starta Python-prompten -
Det fantastiska med MobaSSH är att det har ett mycket enkelt användargränssnitt och
scp
ochssh
och 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.md
Detta 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.com
kopierar/tmp/foo.txt
till en lokal filexample.com
)-r
flagga, eftersom detta inte behövs för att kopiera enstaka filer (det ’ används för att rekursivt kopiera kataloger)