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
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: 
- 
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 - 
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 
roothar du til og med SSH-tilgang på den eksterne maskinen? At ‘ er ganske usikker. Bedre å bruke en vanlig bruk og derettersudofor å 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
- 
Sjekk om
sshdkjører på serveren din ved å bruke:ps aux | grep sshd - 
Hvis ikke, installer
OpenSSHved hjelp avsudo apt-get install openssh-server openssh-clienthttps://www.tecmint.com/install-openssh-server-in-linux/ - 
Start serveren på nytt og bekreft at
sshdkjører medps aux | grep sshd - 
Hvis du trenger det, kan du konfigurere
/etc/ssh/sshd_config-filen, men det er ikke nødvendig for enkle konfigurasjoner - 
bekreft at th e-porter er åpne med
netcat:nc -v -z 127.0.0.1 22 - 
Slik kopierer du filer fra en
Linuxklient til enLinuxklient bruker scp som følgerscp ~/filename.md [email protected]:~/folder/filename.md - 
For å bekrefte at filen er kopiert, bruk
ssh [email protected]og oppgi passordet ditt. 
Løsning for å kopiere filer fra Linux-klient til Windows
- 
Det er flere klienter for å kjøre SSH servere på Windows, for eksempel:
 - 
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=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 - 
Sammenligning av disse serverne:
Bitvise SSH-server
- 
Gir nesten nær native
cmdledetekst,powershellledetekst, autofullføring - 
Tilbyr tilleggsmuligheter for tilpasning, hvis du trenger avansert bruk
 - 
Brukertilpasning for enkle behov er 0. Jeg kom i gang med det innen 2 minutter, etter å ha brukt mye tid prøver å få
MobaSSHogOpenSSHtil å fungere. - 
For å kopiere filer ved hjelp av scp bruk:
scp ~/filename.md [email protected]:/C/Users/username/filename.md - 
Gratis for personlig bruk, $ 99 for profesjonell bruk. På grunn av så mange funksjoner og god integrering er prisen vel verdt pengene.
 
MobaSSH:
- 
gir en Linux shell på Windows hvor enkle Linux-kommandoer som
ls,cp,find, etc., arbeid, likMINGW64 - 
du kan få tilgang til
cmdogpowershelldirekte ved å skrivecmdellerpowershell - 
Unicode-støtte er dårlig. Koding er ikke riktig. Hvis du for eksempel prøver å starte
Pythontolk, vil den krasje. Du må endre kodingen manuelt ved å bruke ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001set PYTHONIOENCONDING=utf-8og deretter starte Python-ledetekst - 
Det som er bra med MobaSSH er at den har et veldig enkelt brukergrensesnitt, og
scpogsshog integrert godt. Så fungerer for enkle brukstilfeller - 
For å kopiere filer fra en Linux-klient til en Windows-server som kjører
MobaSSH: brukscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.mdDette er fordiMobaSSHer basert på Cygwin og stasjonene er kartlagt på samme måtecygwin– 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.
- 
Det er veldig buggy, og du må tilpasse det tungt.
 - 
Kommandofullføring fungerer ikke
 - 
Det vil etterlate blanke mellomrom når du flytter markøren på terminalen
 - 
Python fungerer ikke
 - 
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/ 
localuser@machineA: ssh -p 2222 username@domain(for å indikere at du kjører ssh-kommandoen som lokalbruker på maskinA)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.comkopierer/tmp/foo.txttil en lokal filexample.com)-rflagg, da dette ikke er nødvendig for å kopiere enkeltfiler (det ‘ brukes til å rekursivt kopiere kataloger)