Usa scp per trasferire un file dalla directory locale X alla directory remota Y

Ho dato unocchiata ad altre domande qui e a vari tutorial sullutilizzo di scp Internet, ma non riesco a capire cosa cè che non va.

Sto usando Linux Mint e sto cercando di capire come scp funziona.

Ho “un file file.ext (sul mio computer) nella directory / home / name / dir /

mi collego a una macchina remota che utilizza ssh , come:

ssh -p 2222 username@domain 

mi chiede la password e la shell visualizza:

username@domain ~ $ 

adesso, se emetto il comando (prima di eseguire ssh ero nella directory locale / home / name / dir ):

scp -r -P 2222 file.ext username@domain 

output è:

cp: cannot stat ‘file.ext’: No such file or directory 

Stesso risultato se invece di file.ext scrivo il percorso completo

scp -r -P 2222 /home/name/dir/file.ext username@domain 

Inoltre, lamministratore del server mi ha detto che caricherò il file nella mia home directory remota (invece di root), come:

scp -r -P 2222 file.ext username@domain:~/ 

ma quando lo faccio e premo “Invio” non succede nulla, come se la shell fosse in attesa di ulteriori input.

Riepilogo dei miei problemi:

  • cp: nessun file o directory di questo tipo
  • shell “bloccata” su ~ /

Qualche suggerimento?

Commenti

  • ‘ è leggermente poco chiaro se il tuo problema sia relativo solo al fatto di essere sulla macchina sbagliata … potresti prefissare ogni comando con lhost su cui stai eseguendo? per esempio. localuser@machineA: ssh -p 2222 username@domain (per indicare che stai eseguendo il comando ssh come utente locale sulla macchina A)
  • quando utilizzi scp, il Il lato remoto deve sempre contenere i due punti (ad es. remotehost:/tmp), altrimenti eseguirà solo una normale copia (scp /tmp/foo.txt example.com copierà /tmp/foo.txt in un file locale example.com)
  • rimuoverà -r flag, poiché non è necessario per copiare singoli file (‘ è utilizzato per copiare ricorsivamente le directory)
  • Stai inviando il comando scp allinterno della sessione sshe ? Avrebbe senso se sei sulla macchina locale.

Rispondi

Devi eseguire il scp dalla macchina locale, non dal telecomando. Non hai bisogno di ssh:

dragonmnl@local $ scp -P 2222 file.ext username@domain:~/ 

Inoltre non hai bisogno di -r:

 -r Recursively copy entire directories. 

Se hai già effettuato laccesso alla macchina remota e desideri copiare dal tuo locale, devi fare assicurati che il tuo computer locale sia accessibile tramite Internet e abbia ssh configurato. Non credo che questo sia ciò che stai cercando, ma se lo è, eseguilo dal telecomando:

username@domain $ scp dragonmnl@local:/path/to/file.ext ~/ 

Commenti

  • grazie. il problema era che stavo provando a eseguire scp allinterno della sessione ssh. ora funziona!

Risposta

Fornisco due metodi per caricare / scaricare file tra macchina remota e locale (io uso Mac air):

In questo caso, voglio su / giù 11.jpeg tra locale e remoto:

  1. Copia i file sul servizio nella directory locale: devi essere nel terminale bash locale per eseguire questo comando, non quando sei in ssh!

    scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/ 

    copia i file nella directory locale in servizio remoto: inoltre devi trovarti nel terminale bash locale

    scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx 
  2. Per ottenere la stessa intenzione quando accedi a SSH , devi prima impostare ” Preferenze di sistema > condivisione > accesso remoto > tutti gli utenti (non sono sicuro se devi impostare ” tutti gli utenti “, ma funziona in questa situazione) “il Mac ti dirà ” Per accedere a questo computer da remoto, digita:

    ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/** 

Questo comando sopra è per il download del file da remoto a locale quando si accede a ssh, basta cambiare i due percorsi quando si desidera caricare il file.

Commenti

  • Infine, trovo che Filezilla sia probabilmente il più conveniente nel lavoro quotidiano ~~

Risposta

Utilizza il scp comando

Se desideri trasferire una cartella, solo zip prima, possiamo unzip in seguito.

Dal tuo computer, esegui questo:

$ scp your_path_to_the_file/the_file [email protected]:~/ 

Qui root è il tuo account e 10.145.198.100 è indirizzo IP del server remoto. Copieremo the_file nella cartella ~/ nel telecomando.

Decomprimere il file:

$ unzip the_zip_file.zip -d destination_folder 

Commenti

  • Perché root hai anche laccesso SSH sulla macchina remota? Questo ‘ è piuttosto insicuro. Meglio usare un uso normale e poi sudo per fare tutto ciò che deve fare root su quella macchina.

Rispondi

Se “stai eseguendo questo comando scp sulla macchina remota, sta cercando file.ext come file” locale “, cioè sulla macchina remota.

Per copiare un file dalla macchina remota a quella locale, usa scp -P 2222 username@domain:dir/file.ext localdir (supponendo che file.ext si trovi in ~/dir sul computer remoto, come nel tuo esempio) . Se esegui scp sulla macchina remota, inverti “local” e “remote”.

Commenti

  • LOP desidera copiare da locale a remoto, vedere il titolo ‘ dellOP.
  • Oops, immagino tu ‘ ha ragione. Ma ‘ sembra che lo stia facendo al contrario …

risposta

Solo un piccolo contributo, forse può aiutare i principianti come me: il percorso alla directory remota dovrebbe essere scritto così: username@domain:~/remote_directory

Quello che voglio sottolineare qui è che dovremmo sempre aggiungere che :~/

Risposta

Soluzione per copiare file dal client Linux al server Linux

  1. Controlla se sshd è in esecuzione sul tuo server utilizzando: ps aux | grep sshd

  2. In caso contrario, installa OpenSSH utilizzando sudo apt-get install openssh-server openssh-client https://www.tecmint.com/install-openssh-server-in-linux/

  3. Riavvia il server e verifica che sshd sia in esecuzione utilizzando ps aux | grep sshd

  4. Se hai bisogno puoi configurare il tuo file /etc/ssh/sshd_config, ma non è necessario per configurazioni semplici

  5. verifica che th Le porte sono aperte utilizzando netcat: nc -v -z 127.0.0.1 22

  6. Per copiare file da un Linux client a un Linux client utilizza scp come segue scp ~/filename.md [email protected]:~/folder/filename.md

  7. Per verificare che il file sia stato copiato, utilizza ssh [email protected] e fornisci la tua password.

Soluzione per copiare file da client Linux a Windows

  1. Esistono più client per lesecuzione di SSH server su Windows, come:

  2. Installa uno dei server sopra e assicurati che la porta 22 sia aperta utilizzando

    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. Confronti di questi server:

    Server SSH Bitvise

    1. Fornisce un prompt quasi simile al cmd nativo, prompt powershell, completamento automatico

    2. Fornisce funzionalità aggiuntive per la personalizzazione, se è necessario un utilizzo avanzato

    3. La personalizzazione dellutente per esigenze semplici è 0. Ho iniziato a utilizzarla entro 2 minuti, dopo aver trascorso molto tempo cercando di far funzionare MobaSSH e OpenSSH.

    4. Per copiare file utilizzando scp usa: scp ~/filename.md [email protected]:/C/Users/username/filename.md

    5. Gratuito per uso personale, $ 99 per uso professionale. A causa delle tante funzionalità e dellottima integrazione, il prezzo è valsa la pena.

    MobaSSH:

    1. fornisce un Linux shell su Windows dove semplici comandi Linux come ls, cp, find, ecc., lavoro, simile a MINGW64

    2. puoi accedere a cmd e powershell direttamente digitando cmd o powershell

    3. Il supporto Unicode è scarso. La codifica non è corretta. Ad esempio, se provi ad avviare linterprete Python, si bloccherà. Dovrai modificare la codifica manualmente utilizzando ( https://stackoverflow.com/a/12834315/4752883 ): chcp 65001 set PYTHONIOENCONDING=utf-8 e quindi avviare il prompt di Python

    4. La cosa grandiosa di MobaSSH è che ha uninterfaccia utente molto semplice e scp e ssh e ben integrato. Quindi funzionerà per casi duso semplici

    5. Per copiare file da un client Linux a un server Windows che esegue MobaSSH: usa scp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md Ciò è dovuto al fatto che MobaSSH è basato su Cygwin e le sue unità vengono mappate allo stesso modo cygwin – vengono mappate.

    Utilizza VM di Microsoft con OpenSSHv6.7 installato da https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 è già installato.

    1. È molto difettoso e sarà necessario personalizzarlo pesantemente.

    2. Il completamento del comando non funziona

    3. Lascia spazi vuoti quando sposti il cursore sul terminale

    4. Python non funziona

    5. Le versioni successive di OpenSSH potrebbero essere migliorate. Inoltre, MS sembra rendere disponibile OpenSSH tramite ” Funzioni opzionali ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/

Rispondi

Se ti trovi su OSX …

Quando ho provato ad eseguirlo con username @ local: / file_directory …

Ho ricevuto il seguente errore:

ssh: local: node name or service name not known 

Soluzione

Sul mio Mac ho dovuto eseguire le seguenti operazioni per configurare ssh:

“Preferenze di sistema” -> “Internet & Rete” -> “Condivisione” -> ABILITA “Accesso remoto”

Questo ha quindi fornito il nome utente @ indirizzo ip.

Risposta

Ho avuto lo stesso problema oggi su MAC.

Digita il seguente comando:

scp /local-file-path/ /-remote-location-path/ 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *