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
root
har du til og med SSH-tilgang på den eksterne maskinen? At ‘ er ganske usikker. Bedre å bruke en vanlig bruk og derettersudo
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
-
Sjekk om
sshd
kjører på serveren din ved å bruke:ps aux | grep sshd
-
Hvis ikke, installer
OpenSSH
ved hjelp avsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Start serveren på nytt og bekreft at
sshd
kjø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
Linux
klient til enLinux
klient 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=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
-
Sammenligning av disse serverne:
Bitvise SSH-server
-
Gir nesten nær native
cmd
ledetekst,powershell
ledetekst, 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å
MobaSSH
ogOpenSSH
til å 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
cmd
ogpowershell
direkte ved å skrivecmd
ellerpowershell
-
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 -
Det som er bra med MobaSSH er at den har et veldig enkelt brukergrensesnitt, og
scp
ogssh
og 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.md
Dette er fordiMobaSSH
er 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.com
kopierer/tmp/foo.txt
til en lokal filexample.com
)-r
flagg, da dette ikke er nødvendig for å kopiere enkeltfiler (det ‘ brukes til å rekursivt kopiere kataloger)