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
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:
-
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
-
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 dereftersudo
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
-
Kontroller, om
sshd
kører på din server ved hjælp af:ps aux | grep sshd
-
Hvis ikke, skal du installere
OpenSSH
ved hjælp afsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Genstart din server og kontroller, at
sshd
kører ved hjælp afps aux | grep sshd
-
Hvis du har brug for det, kan du konfigurere din
/etc/ssh/sshd_config
-fil, men det er ikke nødvendigt for enkle konfigurationer -
kontrollere, at th e-porte er åbne ved hjælp af
netcat
:nc -v -z 127.0.0.1 22
-
Sådan kopieres filer fra en
Linux
klient til enLinux
klient bruger scp som følgerscp ~/filename.md [email protected]:~/folder/filename.md
-
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
-
Der er flere klienter til kørsel af SSH servere på Windows, såsom:
-
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
-
Sammenligninger af disse servere:
Bitvise SSH-server
-
Giver næsten tæt på native
cmd
prompt,powershell
prompt, autofuldførelse -
Giver yderligere muligheder for tilpasning, hvis du har brug for avanceret brug
-
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
ogOpenSSH
til at fungere. -
For at kopiere filer ved hjælp af scp brug:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
Gratis til personlig brug, $ 99 til professionel brug. På grund af så mange funktioner og god integration er prisen værd at pengene.
MobaSSH:
-
giver en Linux shell på Windows, hvor enkle Linux-kommandoer såsom
ls
,cp
,find
osv., arbejde svarende tilMINGW64
-
du kan få adgang til
cmd
ogpowershell
direkte ved at skrivecmd
ellerpowershell
-
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 -
Det fantastiske ved MobaSSH er, at det har en meget enkel brugergrænseflade, og
scp
ogssh
og integreret godt. Så fungerer det til simple brugssager -
For at kopiere filer fra en Linux-klient til en Windows-server, der kører
MobaSSH
: brugscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Dette skyldes, atMobaSSH
er baseret på Cygwin, og dens drev er kortlagt på samme mådecygwin
– 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.
-
Det er meget buggy, og du bliver nødt til at tilpasse det kraftigt.
-
Kommandofuldførelse fungerer ikke
-
Det efterlader tomme mellemrum, når du bevæger markøren på terminalen
-
Python fungerer ikke
-
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/
localuser@machineA: ssh -p 2222 username@domain
(for at angive, at du kører kommandoen ssh som localuser på machineA)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 filexample.com
)-r
flag, da dette ikke er nødvendigt til kopiering af enkeltfiler (det ‘ bruges til rekursivt kopiering af mapper)