Ik heb hier rondgekeken naar andere vragen en naar verschillende tutorials over “scp-gebruik” over Internet, maar ik kan niet uitzoeken wat er mis is.
Ik gebruik Linux Mint en ik probeer uit te vinden hoe scp werkt.
Ik “heb een bestand file.ext (op mijn computer) in directory / home / name / dir /
Ik maak verbinding met een externe machine die ssh gebruikt, zoals:
ssh -p 2222 username@domain
het vraagt me het wachtwoord en de shell toont:
username@domain ~ $
nu, als ik het commando geef (voordat ik ssh uitvoerde, bevond ik me in de lokale map / home / name / dir ):
scp -r -P 2222 file.ext username@domain
uitvoer is:
cp: cannot stat ‘file.ext’: No such file or directory
Hetzelfde resultaat als ik in plaats van file.ext het volledige pad schrijf
scp -r -P 2222 /home/name/dir/file.ext username@domain
Ook vertelde de serverbeheerder me dat ik het bestand zal uploaden naar mijn externe thuismap (in plaats van root), zoals:
scp -r -P 2222 file.ext username@domain:~/
maar wanneer ik het doe en op “Enter” druk, gebeurt er niets, alsof de shell wacht op verdere invoer.
Samenvatting van mijn problemen:
- cp: niet zon bestand of map
- shell “blijft hangen” op ~ /
Suggesties?
Opmerkingen
Answer
U moet de scp
commando vanaf de lokale machine, niet op de afstandsbediening. Je hebt de ssh
helemaal niet nodig:
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
Je hebt ook de -r
:
-r Recursively copy entire directories.
Als u al bent ingelogd op de externe machine en wilt kopiëren vanaf uw lokale computer, moet u zorg ervoor dat uw lokale machine toegankelijk is via internet en ssh
is ingesteld. Ik denk niet dat dit is wat je zoekt, maar als dat zo is, voer je dit gewoon uit vanaf de afstandsbediening:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
Reacties
- bedankt. het probleem was dat ik scp probeerde uit te voeren binnen de ssh-sessie. nu werkt het!
Antwoord
Ik bied twee methoden voor het up / down laden van bestanden tussen externe en lokale machine (ik gebruik Mac Air):
In dit geval wil ik 11.jpeg
tussen lokaal en extern:
-
Kopieer bestanden op service naar lokale map: je moet in de lokale bash-terminal zijn om dit commando uit te voeren, niet wanneer je in ssh bent!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/
kopieer bestanden in lokale map naar service op afstand: je moet ook in de lokale bash-terminal zijn
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
-
Om dezelfde intentie te bereiken wanneer je inlogt in de SSH , moet je eerst ” Systeemvoorkeuren > delen > inloggen op afstand > alle gebruikers (ik weet niet zeker of je moet ” alle gebruikers ” instellen, maar het werkt in deze situatie) “zal de Mac je vertellen ” Om op afstand in te loggen op deze computer, typ je:
ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/**
Deze opdracht hierboven is voor het downloaden van bestanden van extern naar lokaal wanneer u zich aanmeldt bij ssh, verander gewoon de twee paden wanneer u het bestand wilt uploaden.
Reacties
- Ten slotte vind ik Filezilla waarschijnlijk de handigste in het dagelijkse werk ~~
Answer
Gebruik het scp
commando
Als je een map wilt overzetten, gewoon zip
het eerst, we kunnen het later unzip
.
Start dit vanaf uw computer:
$ scp your_path_to_the_file/the_file [email protected]:~/
Hier is root
uw account en 10.145.198.100
de IP-adres van de externe server. We gaan the_file
kopiëren naar de map ~/
op de afstandsbediening.
Pak het bestand uit:
$ unzip the_zip_file.zip -d destination_folder
Reacties
- Waarom zou
root
heb zelfs SSH-toegang op de verre machine? Dat ‘ is behoorlijk onzeker. Het is beter om een gewoon gebruik te gebruiken en dansudo
om te doen wat root moet doen op die machine.
Antwoord
Als u “dit scp-commando op de externe machine uitvoert, zoekt het naar file.ext
als een” lokaal “bestand, dwz op de externe machine.
Om een bestand van de externe machine naar de lokale te kopiëren, gebruik scp -P 2222 username@domain:dir/file.ext localdir
(ervan uitgaande dat file.ext
zich in ~/dir
bevindt op de externe computer, zoals in uw voorbeeld) . Als u scp
op de externe machine uitvoert, keer dan “local” en “remote” om.
Reacties
- Het OP wil kopiëren van lokaal naar extern, zie de titel van het OP ‘.
- Oeps, ik denk dat je ‘ hebben gelijk. Maar hij ‘ doet het blijkbaar achterstevoren …
Antwoord
Slechts een kleine bijdrage, misschien kan het beginners zoals ik helpen: het pad naar de externe directory moet als volgt worden geschreven: username@domain:~/remote_directory
Wat ik hier wil benadrukken, is dat we altijd dat :~/
Antwoord
Oplossing om bestanden van Linux-client naar Linux-server te kopiëren
-
Controleer of
sshd
op uw server draait met:ps aux | grep sshd
-
Zo niet, installeer dan
OpenSSH
metsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Start uw server opnieuw op en controleer of
sshd
wordt uitgevoerd metps aux | grep sshd
-
Indien nodig kunt u uw
/etc/ssh/sshd_config
-bestand configureren, maar het is niet nodig voor eenvoudige configuraties -
verifieer dat th De poorten zijn open met
netcat
:nc -v -z 127.0.0.1 22
-
Om bestanden te kopiëren van een
Linux
client naar eenLinux
client gebruikt scp als volgtscp ~/filename.md [email protected]:~/folder/filename.md
-
Gebruik
ssh [email protected]
en geef uw wachtwoord op om te controleren of dat bestand is gekopieerd.
Oplossing om bestanden van Linux-client naar Windows te kopiëren
-
Er zijn meerdere clients voor het uitvoeren van SSH servers op Windows, zoals:
-
Installeer een van de bovenstaande servers en zorg ervoor dat poort 22 open is met
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
-
Vergelijkingen van deze servers:
Bitvise SSH-server
-
Biedt bijna native
cmd
prompt,powershell
prompt, automatische aanvulling -
Biedt extra mogelijkheden voor aanpassing, als u geavanceerd gebruik nodig hebt
-
Gebruikersaanpassing voor eenvoudige behoeften is 0. Ik ben er binnen 2 minuten mee begonnen, na veel tijd te hebben besteed proberen om
MobaSSH
enOpenSSH
aan het werk te krijgen. -
Bestanden kopiëren met scp gebruik:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
Gratis voor persoonlijk gebruik, $ 99 voor professioneel gebruik. Vanwege zoveel functies en geweldige integratie is de prijs het geld meer dan waard.
MobaSSH:
-
biedt een Linux shell op Windows waar eenvoudige Linux-commandos zoals
ls
,cp
,find
, etc., work, vergelijkbaar metMINGW64
-
je hebt toegang tot
cmd
enpowershell
rechtstreeks doorcmd
ofpowershell
-
Unicode-ondersteuning is slecht. Codering is niet correct. Als u bijvoorbeeld de interpretor Python
probeert te starten, zal deze crashen. U moet de codering handmatig wijzigen met ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
en start vervolgens Python-prompt op -
Het mooie van MobaSSH is dat het een heel eenvoudige gebruikersinterface heeft, en
scp
enssh
en goed geïntegreerd. Het zal dus werken voor eenvoudige gebruiksscenarios. -
Om bestanden van een Linux-client naar een Windows-server met
MobaSSH
te kopiëren: gebruikscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Dit komt doordatMobaSSH
is gebaseerd op Cygwin en de schijven op dezelfde manier zijn toegewezencygwin
– s-schijven worden toegewezen.
Gebruik VMs van Microsoft met OpenSSHv6.7 geïnstalleerd vanaf https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 is al geïnstalleerd.
-
Het bevat veel fouten en je zult het sterk moeten aanpassen.
-
Opdrachtaanvulling werkt niet
-
Het laat lege spaties achter als je de cursor op de terminal verplaatst
-
Python werkt niet
-
Latere versies van OpenSSH zijn mogelijk verbeterd. Verder lijkt MS OpenSSH beschikbaar te maken via ” Optionele functies ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
-
Antwoord
Als je toevallig OSX gebruikt …
Toen ik het probeerde uit te voeren met gebruikersnaam @ local: / file_directory …
, kreeg ik de volgende foutmelding:
ssh: local: node name or service name not known
Oplossing
Op mijn Mac moest ik het volgende doen om lokaal ssh
in te stellen:
Systeemvoorkeuren -> Internet & Netwerken -> Delen -> INSCHAKELEN Inloggen op afstand
Dit leverde vervolgens de gebruikersnaam @ ip-adres op.
Answer
Ik had hetzelfde probleem vandaag op MAC.
Typ het volgende commando:
scp /local-file-path/ /-remote-location-path/
localuser@machineA: ssh -p 2222 username@domain
(om aan te geven dat u het ssh-commando uitvoert als localuser op machineA)scp
, de externe zijde moet altijd de dubbele punt bevatten (bijv.remotehost:/tmp
), anders zal het gewoon een gewone kopie maken (scp /tmp/foo.txt example.com
kopieert/tmp/foo.txt
naar een lokaal bestandexample.com
)-r
vlag, aangezien dit niet nodig is voor het kopiëren van enkele bestanden (het ‘ wordt gebruikt om recursief mappen te kopiëren)