Bruk scp til å overføre en fil fra lokal katalog X til ekstern katalog Y

Jeg tok en titt på andre spørsmål her og på forskjellige «scp bruk» -veiledninger om Internett, men jeg kan ikke ordne hva som er galt.

Jeg bruker Linux Mint og jeg prøver å finne ut hvordan scp fungerer.

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

Jeg kobler til en ekstern maskin som bruker ssh , som:

ssh -p 2222 username@domain 

det spør meg om passordet og skallet viser:

username@domain ~ $ 

nå, hvis jeg utsteder kommandoen (før jeg kjørte ssh, var jeg i den lokale katalogen / 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 hele banen

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

Også serveradministratoren fortalte meg at jeg skal laste opp filen til den eksterne hjemmekatalogen min (i stedet for root), som:

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

men når jeg gjør det og trykker «Enter» skjer ingenting, som om skallet ventet på ytterligere inndata.

Sammendrag av problemene mine:

  • cp: ingen slik fil eller katalog
  • skall «fast» på ~ /

Noen forslag?

Kommentarer

  • det ‘ er litt uklart om problemet ditt er bare relatert til å være på feil maskin … kan du vennligst prefiks hver kommando med verten du kjører på? f.eks. localuser@machineA: ssh -p 2222 username@domain (for å indikere at du kjører ssh-kommandoen som lokalbruker på maskinA)
  • når du bruker scp, ekstern side må alltid inneholde kolon (f.eks. remotehost:/tmp), ellers vil det bare gjøre en vanlig kopi (scp /tmp/foo.txt example.com kopierer /tmp/foo.txt til en lokal fil example.com)
  • fjern -r flagg, da dette ikke er nødvendig for å kopiere enkeltfiler (det ‘ brukes til å rekursivt kopiere kataloger)
  • Utsteder du scp-kommandoen inne i sshe-sesjonen ? Det ville være fornuftig hvis du er på den lokale maskinen.

Svar

Du må kjøre scp kommando fra den lokale maskinen, ikke på fjernkontrollen. Du trenger ikke ssh i det hele tatt:

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

Du trenger heller ikke -r:

 -r Recursively copy entire directories. 

Hvis du allerede er logget på den eksterne maskinen og vil kopiere fra din lokale, må du lage sørg for at den lokale maskinen din er tilgjengelig via internett og har ssh konfigurert. Jeg tror ikke dette er det du er ute etter, men hvis det er det, er det bare å kjøre dette fra fjernkontrollen:

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

Kommentarer

  • takk. problemet var at jeg prøvde å kjøre scp inne i ssh-sesjonen. nå fungerer det!

Svar

Jeg gir to metoder for opp- / nedlastingsfil mellom ekstern og lokal maskin (jeg bruker Mac air):

I dette tilfellet vil jeg opp / ned 11.jpeg mellom lokalt og eksternt:

  1. Kopier filer på tjeneste til lokal dir: Du må være i lokal bash-terminal for å utføre denne kommandoen, ikke når du er i ssh!

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

    kopier filer i lokal dir til ekstern tjeneste: du må også være i lokal bash-terminal

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. For å oppnå den samme intensjonen når du logger på SSH , må du først sette “ Systemvalg > deling > ekstern pålogging > alle brukere (jeg er ikke sikker på om du må angi for » alle brukere «, men det fungerer i denne situasjonen) ”Mac vil fortelle deg » For å logge deg på denne datamaskinen eksternt, skriv:

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

Denne kommandoen ovenfor er for nedlasting av fil fra ekstern til lokal når du logger på ssh, bare endre to stier når du vil laste opp fil.

Kommentarer

  • Endelig synes jeg Filezilla er trolig den mest praktiske i det daglige arbeidet ~ ~

Svar

Bruk scp -kommandoen

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

Fra datamaskinen din, kjør dette:

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

Her er root kontoen din, og 10.145.198.100 er fjernserverens IP-adresse. Vi skal kopiere the_file til ~/ -mappen i fjernkontrollen.

Pakk ut fil:

$ unzip the_zip_file.zip -d destination_folder 

Kommentarer

  • Hvorfor ville root har du til og med SSH-tilgang på den eksterne maskinen? At ‘ er ganske usikker. Bedre å bruke en vanlig bruk og deretter sudo for å gjøre hva root har å gjøre på den maskinen.

Svar

Hvis du kjører denne scp-kommandoen på den eksterne maskinen, ser den etter file.ext som en «lokal» fil, dvs. på den eksterne maskinen.

Hvis du vil kopiere en fil fra den eksterne maskinen til den lokale, bruker du scp -P 2222 username@domain:dir/file.ext localdir (forutsatt at file.ext er i ~/dir på den eksterne datamaskinen, som i eksemplet ditt) . Hvis du kjører scp på den eksterne maskinen, snur du «local» og «remote».

Kommentarer

  • OP vil kopiere fra lokal til ekstern, se OP ‘ s tittel.
  • Ups, jeg antar at du ‘ har rett. Men han ‘ gjør det tilsynelatende bakover …

Svar

Bare et lite bidrag, det kan kanskje hjelpe nybegynnere som meg: banen til den eksterne katalogen skal skrives slik: username@domain:~/remote_directory

Det jeg vil fremheve her er at vi alltid skal legge til at :~/

Svar

Løsning for å kopiere filer fra Linux-klient til Linux-server

  1. Sjekk om sshd kjører på serveren din ved å bruke: ps aux | grep sshd

  2. Hvis ikke, installer OpenSSH ved hjelp av sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Start serveren på nytt og bekreft at sshd kjører med ps aux | grep sshd

  4. Hvis du trenger det, kan du konfigurere /etc/ssh/sshd_config -filen, men det er ikke nødvendig for enkle konfigurasjoner

  5. bekreft at th e-porter er åpne med netcat: nc -v -z 127.0.0.1 22

  6. Slik kopierer du filer fra en Linux klient til en Linux klient bruker scp som følger scp ~/filename.md [email protected]:~/folder/filename.md

  7. For å bekrefte at filen er kopiert, bruk ssh [email protected] og oppgi passordet ditt.

Løsning for å kopiere filer fra Linux-klient til Windows

  1. Det er flere klienter for å kjøre SSH servere på Windows, for eksempel:

  2. Installer en av serverne ovenfor og sørg for at port 22 er åpen ved hjelp av

    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. Sammenligning av disse serverne:

    Bitvise SSH-server

    1. Gir nesten nær native cmd ledetekst, powershell ledetekst, autofullføring

    2. Tilbyr tilleggsmuligheter for tilpasning, hvis du trenger avansert bruk

    3. Brukertilpasning for enkle behov er 0. Jeg kom i gang med det innen 2 minutter, etter å ha brukt mye tid prøver å få MobaSSH og OpenSSH til å fungere.

    4. For å kopiere filer ved hjelp av scp bruk: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Gratis for personlig bruk, $ 99 for profesjonell bruk. På grunn av så mange funksjoner og god integrering er prisen vel verdt pengene.

    MobaSSH:

    1. gir en Linux shell på Windows hvor enkle Linux-kommandoer som ls, cp, find, etc., arbeid, lik MINGW64

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

    3. Unicode-støtte er dårlig. Koding er ikke riktig. Hvis du for eksempel prøver å starte Python tolk, vil den krasje. Du må endre kodingen manuelt ved å bruke ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 og deretter starte Python-ledetekst

    4. Det som er bra med MobaSSH er at den har et veldig enkelt brukergrensesnitt, og scp og ssh og integrert godt. Så fungerer for enkle brukstilfeller

    5. For å kopiere filer fra en Linux-klient til en Windows-server som kjører MobaSSH: bruk scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Dette er fordi MobaSSH er basert på Cygwin og stasjonene er kartlagt på samme måte cygwin – s-stasjoner blir kartlagt.

    Bruk virtuelle maskiner fra Microsoft med OpenSSHv6.7 installert fra https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 er allerede installert.

    1. Det er veldig buggy, og du må tilpasse det tungt.

    2. Kommandofullføring fungerer ikke

    3. Det vil etterlate blanke mellomrom når du flytter markøren på terminalen

    4. Python fungerer ikke

    5. Senere versjoner av OpenSSH, kan ha forbedret den. Videre ser det ut til at MS gjør OpenSSH tilgjengelig via » Valgfrie funksjoner » https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Svar

Hvis du tilfeldigvis er på OSX …

Da jeg prøvde å kjøre den med brukernavn @ local: / file_directory …

fikk jeg følgende feil:

ssh: local: node name or service name not known 

Løsning

På Mac-en min måtte jeg gjøre følgende for å sette opp lokal ssh:

Systemvalg -> Internett & Nettverk -> Deling -> AKTIVER Fjerninnlogging

Dette ga da brukernavnet @ ip-adresse.

Svar

Jeg hadde det samme problemet i dag på MAC.

Skriv inn følgende kommando:

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

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *