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
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:
-
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
-
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 poisudo
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
-
Controlla se
sshd
è in esecuzione sul tuo server utilizzando:ps aux | grep sshd
-
In caso contrario, installa
OpenSSH
utilizzandosudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Riavvia il server e verifica che
sshd
sia in esecuzione utilizzandops aux | grep sshd
-
Se hai bisogno puoi configurare il tuo file
/etc/ssh/sshd_config
, ma non è necessario per configurazioni semplici -
verifica che th Le porte sono aperte utilizzando
netcat
:nc -v -z 127.0.0.1 22
-
Per copiare file da un
Linux
client a unLinux
client utilizza scp come seguescp ~/filename.md [email protected]:~/folder/filename.md
-
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
-
Esistono più client per lesecuzione di SSH server su Windows, come:
-
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
-
Confronti di questi server:
Server SSH Bitvise
-
Fornisce un prompt quasi simile al
cmd
nativo, promptpowershell
, completamento automatico -
Fornisce funzionalità aggiuntive per la personalizzazione, se è necessario un utilizzo avanzato
-
La personalizzazione dellutente per esigenze semplici è 0. Ho iniziato a utilizzarla entro 2 minuti, dopo aver trascorso molto tempo cercando di far funzionare
MobaSSH
eOpenSSH
. -
Per copiare file utilizzando scp usa:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
Gratuito per uso personale, $ 99 per uso professionale. A causa delle tante funzionalità e dellottima integrazione, il prezzo è valsa la pena.
MobaSSH:
-
fornisce un Linux shell su Windows dove semplici comandi Linux come
ls
,cp
,find
, ecc., lavoro, simile aMINGW64
-
puoi accedere a
cmd
epowershell
direttamente digitandocmd
opowershell
-
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 -
La cosa grandiosa di MobaSSH è che ha uninterfaccia utente molto semplice e
scp
essh
e ben integrato. Quindi funzionerà per casi duso semplici -
Per copiare file da un client Linux a un server Windows che esegue
MobaSSH
: usascp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Ciò è dovuto al fatto cheMobaSSH
è basato su Cygwin e le sue unità vengono mappate allo stesso modocygwin
– 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.
-
È molto difettoso e sarà necessario personalizzarlo pesantemente.
-
Il completamento del comando non funziona
-
Lascia spazi vuoti quando sposti il cursore sul terminale
-
Python non funziona
-
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/
localuser@machineA: ssh -p 2222 username@domain
(per indicare che stai eseguendo il comando ssh come utente locale sulla macchina A)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 localeexample.com
)-r
flag, poiché non è necessario per copiare singoli file (‘ è utilizzato per copiare ricorsivamente le directory)