Gebruik scp om een bestand over te brengen van lokale map X naar externe map Y

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

  • het ‘ is enigszins onduidelijk of uw probleem is alleen gerelateerd aan het feit dat je op de verkeerde machine zit … kun je alstublieft elk commando prefixen met de host waar je op draait? bijv. localuser@machineA: ssh -p 2222 username@domain (om aan te geven dat u het ssh-commando uitvoert als localuser op machineA)
  • bij gebruik van 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 bestand example.com)
  • verwijdert de -r vlag, aangezien dit niet nodig is voor het kopiëren van enkele bestanden (het ‘ wordt gebruikt om recursief mappen te kopiëren)
  • Geeft u het scp-commando binnen de sshe-sessie ? Het zou logisch zijn als u zich op de lokale computer bevindt.

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:

  1. 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 
  2. 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 dan sudo 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

  1. Controleer of sshd op uw server draait met: ps aux | grep sshd

  2. Zo niet, installeer dan OpenSSH met sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Start uw server opnieuw op en controleer of sshd wordt uitgevoerd met ps aux | grep sshd

  4. Indien nodig kunt u uw /etc/ssh/sshd_config -bestand configureren, maar het is niet nodig voor eenvoudige configuraties

  5. verifieer dat th De poorten zijn open met netcat: nc -v -z 127.0.0.1 22

  6. Om bestanden te kopiëren van een Linux client naar een Linux client gebruikt scp als volgt scp ~/filename.md [email protected]:~/folder/filename.md

  7. 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

  1. Er zijn meerdere clients voor het uitvoeren van SSH servers op Windows, zoals:

  2. 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 
  3. Vergelijkingen van deze servers:

    Bitvise SSH-server

    1. Biedt bijna native cmd prompt, powershell prompt, automatische aanvulling

    2. Biedt extra mogelijkheden voor aanpassing, als u geavanceerd gebruik nodig hebt

    3. Gebruikersaanpassing voor eenvoudige behoeften is 0. Ik ben er binnen 2 minuten mee begonnen, na veel tijd te hebben besteed proberen om MobaSSH en OpenSSH aan het werk te krijgen.

    4. Bestanden kopiëren met scp gebruik: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Gratis voor persoonlijk gebruik, $ 99 voor professioneel gebruik. Vanwege zoveel functies en geweldige integratie is de prijs het geld meer dan waard.

    MobaSSH:

    1. biedt een Linux shell op Windows waar eenvoudige Linux-commandos zoals ls, cp, find, etc., work, vergelijkbaar met MINGW64

    2. je hebt toegang tot cmd en powershell rechtstreeks door cmd of powershell

    3. 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
    4. Het mooie van MobaSSH is dat het een heel eenvoudige gebruikersinterface heeft, en scp en ssh en goed geïntegreerd. Het zal dus werken voor eenvoudige gebruiksscenarios.

    5. Om bestanden van een Linux-client naar een Windows-server met MobaSSH te kopiëren: gebruik scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Dit komt doordat MobaSSH is gebaseerd op Cygwin en de schijven op dezelfde manier zijn toegewezen cygwin – 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.

    1. Het bevat veel fouten en je zult het sterk moeten aanpassen.

    2. Opdrachtaanvulling werkt niet

    3. Het laat lege spaties achter als je de cursor op de terminal verplaatst

    4. Python werkt niet

    5. 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/ 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *