Brug scp til at overføre en fil fra det lokale bibliotek X til det eksterne bibliotek Y

Jeg kiggede rundt på andre spørgsmål her og på forskellige “scp-brug” -studier om Internettet, men jeg kan ikke finde ud af, hvad der er forkert.

Jeg bruger Linux Mint, og jeg prøver at finde ud af, hvordan scp fungerer.

Jeg har en fil file.ext (på min computer) i biblioteket / home / name / dir /

Jeg opretter forbindelse til en fjernmaskine, der bruger ssh , som:

ssh -p 2222 username@domain 

det spørger mig adgangskoden, og skallen viser:

username@domain ~ $ 

nu, hvis jeg udsteder kommandoen (før jeg kørte ssh, var jeg i den lokale mappe / home / name / dir ):

scp -r -P 2222 file.ext username@domain 

output er:

cp: cannot stat ‘file.ext’: No such file or directory 

Samme resultat, hvis jeg i stedet for file.ext skriver den komplette sti

scp -r -P 2222 /home/name/dir/file.ext username@domain 

Også serveradministratoren fortalte mig, at jeg skal uploade filen til min eksterne hjemmekatalog (i stedet for root), som:

scp -r -P 2222 file.ext username@domain:~/ 

men når jeg gør det og trykker på “Enter” sker der intet, som hvis skallen ventede på yderligere input.

Oversigt over mine problemer:

  • cp: ingen sådan fil eller katalog
  • shell “fast” på ~ /

Eventuelle forslag?

Kommentarer

  • det ‘ er lidt uklart, om dit problem er kun relateret til at være på den forkerte maskine … kan du venligst prefikse hver kommando med den vært, du kører på? for eksempel. localuser@machineA: ssh -p 2222 username@domain (for at angive, at du kører kommandoen ssh som localuser på machineA)
  • når du bruger scp, fjern side skal altid indeholde tyktarmen (f.eks. remotehost:/tmp), ellers laver den bare en almindelig kopi (scp /tmp/foo.txt example.com kopierer /tmp/foo.txt til en lokal fil example.com)
  • fjern -r flag, da dette ikke er nødvendigt til kopiering af enkeltfiler (det ‘ bruges til rekursivt kopiering af mapper)
  • Udsteder du scp-kommandoen inde i sshe-sessionen ? Det ville være fornuftigt, hvis du er på den lokale maskine.

Svar

Du skal køre scp kommando fra den lokale maskine, ikke på fjernbetjeningen. Du behøver slet ikke ssh:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

Du har heller ikke brug for -r:

 -r Recursively copy entire directories. 

Hvis du allerede er logget ind på fjernmaskinen og vil kopiere fra din lokale, skal du oprette Sørg for, at din lokale maskine er tilgængelig via internettet og har indstillet ssh. Jeg tror ikke, det er, hvad du leder efter, men hvis det er, skal du bare køre dette fra fjernbetjeningen:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/ 

Kommentarer

  • tak. problemet var, at jeg prøvede at køre scp inde i ssh-session. nu fungerer det!

Svar

Jeg giver to metoder til op- / nedindlæsningsfil mellem fjern- og lokal maskine (jeg bruger Mac air):

I dette tilfælde vil jeg op / ned 11.jpeg mellem lokal og fjernbetjening:

  1. Kopier filer til tjeneste til lokal dir: Du skal være i lokal bash-terminal for at udføre denne kommando, ikke når du er i ssh!

    scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/ 

    kopier filer i lokal dir til fjernservice: også skal du være i lokal bash-terminal

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. For at opnå den samme hensigt når du logger på SSH , skal du først indstille “ Systemindstillinger > deling > fjernlog log ind > alle brugere (jeg er ikke sikker på om du skal indstille for ” alle brugere “, men det fungerer i denne situation) ”Mac vil fortælle dig ” For at logge på denne computer eksternt skal du skrive:

    ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/** 

Denne kommando ovenfor er til download af fil fra fjernbetjening til lokal, når du logger ind på ssh, skal du bare ændre de to stier, når du vil uploade filen.

Kommentarer

  • Endelig finder jeg Filezilla sandsynligvis den mest bekvemme i det daglige arbejde ~ ~

Svar

Brug kommandoen scp

Hvis du vil overføre en mappe, bare zip det først, vi kan unzip det senere.

Fra din computer skal du køre dette:

$ scp your_path_to_the_file/the_file [email protected]:~/ 

Her er root din konto, og 10.145.198.100 er fjernserverens IP-adresse. Vi kopierer the_file til ~/ -mappen på fjernbetjeningen.

Pak zip-fil ud:

$ unzip the_zip_file.zip -d destination_folder 

Kommentarer

  • Hvorfor ville root har du endda SSH-adgang på den eksterne maskine? At ‘ er ret usikker. Bedre at bruge en almindelig brug og derefter sudo for at gøre hvad root skal gøre på den maskine.

Svar

Hvis du kører denne scp-kommando på den eksterne maskine, søger den file.ext som en “lokal” fil, dvs. på fjernmaskinen.

For at kopiere en fil fra den eksterne maskine til den lokale skal du bruge scp -P 2222 username@domain:dir/file.ext localdir (forudsat at file.ext er i ~/dir på fjerncomputeren, som i dit eksempel) . Hvis du kører scp på fjernmaskinen, skal du vende “lokal” og “fjernbetjening”.

Kommentarer

  • OP vil kopiere fra lokal til fjernbetjening, se OP ‘ s titel.
  • Ups, jeg gætter dig ‘ har ret. Men han ‘ gør det tilsyneladende baglæns …

Svar

Bare et lille bidrag, måske kan det hjælpe begyndere som mig: stien til fjernmappen skal skrives således: username@domain:~/remote_directory

Hvad jeg vil fremhæve her er, at vi altid skal tilføje, at :~/

Svar

Løsning til kopiering af filer fra Linux-klient til Linux-server

  1. Kontroller, om sshd kører på din server ved hjælp af: ps aux | grep sshd

  2. Hvis ikke, skal du installere OpenSSH ved hjælp af sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Genstart din server og kontroller, at sshd kører ved hjælp af ps aux | grep sshd

  4. Hvis du har brug for det, kan du konfigurere din /etc/ssh/sshd_config -fil, men det er ikke nødvendigt for enkle konfigurationer

  5. kontrollere, at th e-porte er åbne ved hjælp af netcat: nc -v -z 127.0.0.1 22

  6. Sådan kopieres filer fra en Linux klient til en Linux klient bruger scp som følger scp ~/filename.md [email protected]:~/folder/filename.md

  7. For at bekræfte, at filen er kopieret, skal du bruge ssh [email protected] og angive din adgangskode.

Løsning til kopiering af filer fra Linux-klient til Windows

  1. Der er flere klienter til kørsel af SSH servere på Windows, såsom:

  2. Installer en af ovenstående servere og sørg for at port 22 er åben ved hjælp af

    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. Sammenligninger af disse servere:

    Bitvise SSH-server

    1. Giver næsten tæt på native cmd prompt, powershell prompt, autofuldførelse

    2. Giver yderligere muligheder for tilpasning, hvis du har brug for avanceret brug

    3. Brugertilpasning til enkle behov er 0. Jeg kom i gang med det inden for 2 minutter efter at have brugt meget tid forsøger at få MobaSSH og OpenSSH til at fungere.

    4. For at kopiere filer ved hjælp af scp brug: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Gratis til personlig brug, $ 99 til professionel brug. På grund af så mange funktioner og god integration er prisen værd at pengene.

    MobaSSH:

    1. giver en Linux shell på Windows, hvor enkle Linux-kommandoer såsom ls, cp, find osv., arbejde svarende til MINGW64

    2. du kan få adgang til cmd og powershell direkte ved at skrive cmd eller powershell

    3. Unicode-support er dårlig. Kodning er ikke korrekt. Hvis du f.eks. Prøver at starte Python fortolker, går det ned. Du bliver nødt til at ændre kodningen manuelt ved hjælp af ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 og derefter starte Python-prompt

    4. Det fantastiske ved MobaSSH er, at det har en meget enkel brugergrænseflade, og scp og ssh og integreret godt. Så fungerer det til simple brugssager

    5. For at kopiere filer fra en Linux-klient til en Windows-server, der kører MobaSSH: brug scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Dette skyldes, at MobaSSH er baseret på Cygwin, og dens drev er kortlagt på samme måde cygwin – s drev er kortlagt.

    Brug VMer fra Microsoft med OpenSSHv6.7 installeret fra https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 er allerede installeret.

    1. Det er meget buggy, og du bliver nødt til at tilpasse det kraftigt.

    2. Kommandofuldførelse fungerer ikke

    3. Det efterlader tomme mellemrum, når du bevæger markøren på terminalen

    4. Python fungerer ikke

    5. Senere versioner af OpenSSH kan have forbedret det. Yderligere ser MS ud til at gøre OpenSSH tilgængelig via ” Ekstra funktioner ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Svar

Hvis du tilfældigvis er på OSX …

Da jeg forsøgte at køre det med brugernavn @ local: / file_directory …

Jeg fik følgende fejl:

ssh: local: node name or service name not known 

Løsning

På min Mac var jeg nødt til at gøre følgende for at konfigurere lokal ssh:

Systemindstillinger -> Internet & Netværk -> Deling -> AKTIVER Fjernlogin

Dette gav derefter brugernavnet @ ip-adresse.

Svar

Jeg havde det samme problem i dag på MAC.

Skriv følgende kommando:

scp /local-file-path/ /-remote-location-path/ 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *