Använd scp för att överföra en fil från lokal katalog X till fjärrkatalog Y

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

  • det ’ är något oklart om ditt problem är bara relaterad till att vara på fel maskin … kan du snälla prefixa varje kommando med värden du kör på? t.ex. localuser@machineA: ssh -p 2222 username@domain (för att indikera att du kör ssh-kommandot som lokalanvändare på maskinA)
  • när du använder 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 fil example.com)
  • tar bort -r flagga, eftersom detta inte behövs för att kopiera enstaka filer (det ’ används för att rekursivt kopiera kataloger)
  • Utfärdar du scp-kommandot inuti sshe-sessionen ? Det vore vettigt om du är på den lokala maskinen.

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:

  1. 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 
  2. 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 sedan sudo 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

  1. Kontrollera om sshd körs på din server med: ps aux | grep sshd

  2. Om inte, installera OpenSSH med sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Starta om din server och kontrollera att sshd körs med ps aux | grep sshd

  4. Om du behöver kan du konfigurera din /etc/ssh/sshd_config -fil, men det är inte nödvändigt för enkla konfigurationer

  5. verifiera att th e-portar är öppna med netcat: nc -v -z 127.0.0.1 22

  6. För att kopiera filer från en Linux klient till en Linux klient använder scp enligt följande scp ~/filename.md [email protected]:~/folder/filename.md

  7. 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

  1. Det finns flera klienter för att köra SSH servrar på Windows, till exempel:

  2. 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 
  3. Jämförelser mellan dessa servrar:

    Bitvise SSH-server

    1. Ger nästan nära infödda cmd prompt, powershell prompt, autoslutförande

    2. Ger ytterligare funktioner för anpassning, om du behöver avancerad användning

    3. 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 och OpenSSH att fungera.

    4. Kopiera filer med scp användning: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. 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:

    1. tillhandahåller en Linux skal på Windows där enkla Linux-kommandon som ls, cp, find, etc., arbete, liknande MINGW64

    2. du kan komma åt cmd och powershell direkt genom att skriva cmd eller powershell

    3. 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

    4. Det fantastiska med MobaSSH är att det har ett mycket enkelt användargränssnitt och scp och ssh och integrerade väl. Så fungerar för enkla användningsfall

    5. För att kopiera filer från en Linux-klient till en Windows-server som kör MobaSSH: använd scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Detta beror på att MobaSSH är baserat på Cygwin och dess enheter är mappade på samma sätt cygwin – 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.

    1. Det är väldigt buggigt och du måste anpassa det kraftigt.

    2. Färdigställande av kommandot fungerar inte

    3. Det lämnar tomma mellanslag när du flyttar markören på terminalen

    4. Python fungerar inte

    5. 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/ 

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *