Am aruncat o privire în jur la alte întrebări aici și la diferite tutoriale de „utilizare scp” de pe Internet, dar nu pot rezolva ce nu este corect.
Folosesc Linux Mint și încerc să aflu cum scp funcționează.
Am un fișier file.ext (pe computerul meu) în directorul / home / name / dir /
mă conectez la o mașină la distanță care utilizează ssh , cum ar fi:
ssh -p 2222 username@domain
mă întreabă parola și shell-ul afișează:
username@domain ~ $
acum, dacă emit comanda (înainte de a rula ssh eram în directorul local / home / name / dir ):
scp -r -P 2222 file.ext username@domain
ieșire este:
cp: cannot stat ‘file.ext’: No such file or directory
Același rezultat dacă în loc de file.ext scriu calea completă
scp -r -P 2222 /home/name/dir/file.ext username@domain
De asemenea, administratorul serverului mi-a spus că voi încărca fișierul în directorul meu de acasă la distanță (în loc de rădăcină), cum ar fi:
scp -r -P 2222 file.ext username@domain:~/
dar când o fac și apăs pe „Enter” nu se întâmplă nimic, ca și cum shell-ul ar fi așteptat intrări suplimentare.
Rezumatul problemelor mele:
- cp: nu există un astfel de fișier sau director
- shell „blocat” pe ~ /
Aveți sugestii?
Comentarii
Răspuns
Trebuie să rulați scp
de pe mașina locală, nu pe telecomandă. Nu aveți deloc nevoie de ssh
:
dragonmnl@local $ scp -P 2222 file.ext username@domain:~/
De asemenea, nu aveți nevoie de -r
:
-r Recursively copy entire directories.
Dacă sunteți deja conectat la aparatul de la distanță și doriți să copiați de la local, trebuie să faceți asigurați-vă că mașina dvs. locală este accesibilă prin intermediul internetului și a configurat ssh
. Nu cred că acesta este ceea ce cauți, dar dacă este, rulați acest lucru de la telecomandă:
username@domain $ scp dragonmnl@local:/path/to/file.ext ~/
Comentarii
- mulțumesc. problema a fost că încercam să rulez scp în interiorul sesiunii ssh. acum funcționează!
Răspunde
Ofer două metode de încărcare sus / jos a fișierului între mașina locală și la distanță (folosesc Mac air):
În acest caz, vreau să sus / jos 11.jpeg
între local și la distanță:
-
Copiați fișierele din serviciu în dir. Local: trebuie să vă aflați în terminalul bash local pentru a efectua această comandă, nu când vă aflați în ssh!
scp username@domain:/home/xxx/xxx/11.jpeg /Users/username/Desktop/
copiați fișierele în directorul local în serviciu la distanță: de asemenea, trebuie să vă aflați în terminalul local bash
scp /Users/username/Desktop/11.jpeg username@domain:/home/xxx/xxx
-
Pentru a realiza aceeași intenție când vă conectați la SSH , trebuie mai întâi să setați „ Preferințe sistem > partajare > conectare la distanță > toți utilizatorii (nu sunt sigur dacă trebuie să setați pentru ” toți utilizatorii „, dar funcționează în această situație) ”Mac vă va spune ” Pentru a vă conecta la acest computer de la distanță, tastați:
ssh username@xxxxxx, then type in the command below: scp username@domain:/home/xxx/xxx/11.jpeg username@xxxxxx:/Users/username/Desktop/**
Această comandă de mai sus este pentru descărcarea fișierului de la distanță la local atunci când vă conectați la ssh, schimbați doar calea celor două când doriți să încărcați fișierul.
Comentarii
- În cele din urmă, consider că Filezilla este probabil cel mai convenabil în munca de zi cu zi ~~
Răspuns
Utilizați comanda scp
Dacă doriți să transferați un folder, zip
mai întâi, îl putem unzip
mai târziu.
De pe computer, executați acest lucru:
$ scp your_path_to_the_file/the_file [email protected]:~/
Aici, root
este contul dvs. și 10.145.198.100
este adresa IP a serverului la distanță. Vom copia the_file
în dosarul ~/
din telecomandă.
Unzip file:
$ unzip the_zip_file.zip -d destination_folder
Comentarii
- De ce ar fi
root
chiar ai acces SSH pe aparatul de la distanță? ‘ este destul de nesigur. Mai bine să folosiți o utilizare obișnuită și apoisudo
pentru a face orice rădăcină are de făcut pe acel aparat.
Răspuns
Dacă rulați această comandă scp pe computerul la distanță, acesta caută file.ext
ca fișier „local”, adică pe aparatul de la distanță.
Pentru a copia un fișier de pe aparatul de la distanță pe cel local, utilizați scp -P 2222 username@domain:dir/file.ext localdir
(presupunând că file.ext
este în ~/dir
pe computerul de la distanță, ca în exemplul dvs.) . Dacă rulați scp
pe echipamentul la distanță, inversați „local” și „la distanță”.
Comentarii
- OP vrea să copieze de la local la distanță, consultați titlul OP ‘.
- Hopa, cred că vă ‘ are dreptate. Dar el ‘ se pare că o face înapoi …
Răspuns
Doar o mică contribuție, poate că poate ajuta începătorii ca mine: calea către directorul de la distanță ar trebui să fie scris astfel: username@domain:~/remote_directory
Ceea ce vreau să subliniez aici este că ar trebui să adăugăm întotdeauna că :~/
Răspuns
Soluție pentru copierea fișierelor de pe clientul Linux pe serverul Linux
-
Verificați dacă
sshd
rulează pe serverul dvs. utilizând:ps aux | grep sshd
-
Dacă nu, instalați
OpenSSH
utilizândsudo apt-get install openssh-server openssh-client
https://www.tecmint.com/install-openssh-server-in-linux/ -
Reporniți serverul și verificați dacă
sshd
rulează utilizândps aux | grep sshd
-
Dacă aveți nevoie, vă puteți configura fișierul
/etc/ssh/sshd_config
, dar nu este necesar pentru configurații simple -
verificați dacă Porturile sunt deschise folosind
netcat
:nc -v -z 127.0.0.1 22
-
Pentru a copia fișiere dintr-un
Linux
client către unLinux
client utilizează scp după cum urmeazăscp ~/filename.md [email protected]:~/folder/filename.md
-
Pentru a verifica dacă fișierul a fost copiat, utilizați
ssh [email protected]
și furnizați parola.
Soluție pentru copierea fișierelor de la clientul Linux pe Windows
-
Există mai mulți clienți pentru rularea SSH servere pe Windows, cum ar fi:
-
Instalați unul dintre serverele de mai sus și asigurați-vă că portul 22 este deschis folosind
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
-
Comparații ale acestor servere:
Server Bitvise SSH
-
Oferă aproape aproape de promptul divin
cmd
, promptulpowershell
, completarea automată -
Oferă capabilități suplimentare pentru personalizare, dacă aveți nevoie de utilizare avansată
-
Personalizarea utilizatorului pentru nevoi simple este 0. Am început să o utilizez în 2 minute, după ce am petrecut mult timp încercând ca
MobaSSH
șiOpenSSH
să funcționeze. -
Pentru a copia fișiere folosind scp utilizați:
scp ~/filename.md [email protected]:/C/Users/username/filename.md
-
Gratuit pentru uz personal, 99 USD pentru uz profesional. Datorită atâtea funcționalități și integrării excelente, prețul merită foarte mult banii.
MobaSSH:
-
oferă un Linux shell pe Windows unde comenzi Linux simple precum
ls
,cp
,find
etc., lucru, similar cuMINGW64
-
puteți accesa
cmd
șipowershell
direct tastândcmd
saupowershell
-
Suportul Unicode este slab. Codificarea nu este corectă. De exemplu, dacă încercați să porniți
Python
interpretor, acesta se va bloca. Va trebui să modificați codarea manual folosind ( https://stackoverflow.com/a/12834315/4752883 ):chcp 65001
set PYTHONIOENCONDING=utf-8
și apoi porniți promptul Python -
Cel mai bun lucru despre MobaSSH este că are o interfață cu utilizatorul foarte simplă și
scp
șissh
și bine integrat. Deci, va funcționa pentru cazuri de utilizare simple -
Pentru a copia fișiere de la un client Linux pe un server Windows care rulează
MobaSSH
: utilizațiscp ~/filename.md [email protected]:/cygdrive/c/Users/username/filename.md
Acest lucru se datorează faptului căMobaSSH
se bazează pe Cygwin și unitățile sale sunt mapate în același modcygwin
– Unitățile sunt mapate.
Utilizați VM-urile de la Microsoft cu OpenSSHv6.7 instalat de la https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/ , OpenSSHv6.7 este deja instalat.
-
Este foarte bug și va trebui să îl personalizați puternic.
-
Finalizarea comenzii nu funcționează
-
Va lăsa spații goale atunci când mutați cursorul pe terminal
-
Python nu funcționează
-
Este posibil ca versiunile ulterioare ale OpenSSH să se fi îmbunătățit. Mai mult, MS pare să facă OpenSSH disponibil prin ” Caracteristici opționale ” https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
-
Răspunde
Dacă se întâmplă să fii pe OSX …
Când am încercat să-l rulez cu numele de utilizator @ local: / file_directory …
Am primit următoarea eroare:
ssh: local: node name or service name not known
Soluție
Pe Mac-ul meu a trebuit să fac următoarele pentru a configura local ssh
:
Preferințe sistem -> Internet & Rețea -> Partajare -> ACTIVĂ Conectare la distanță
Aceasta a furnizat apoi numele de utilizator @ adresa IP.
Răspuns
Am avut aceeași problemă astăzi pe MAC.
Tastați următoarea comandă:
scp /local-file-path/ /-remote-location-path/
localuser@machineA: ssh -p 2222 username@domain
(pentru a indica faptul că executați comanda ssh ca localuser pe computerA)scp
, latura la distanță trebuie să conțină întotdeauna două puncte (de ex.remotehost:/tmp
), altfel va face doar o copie obișnuită (scp /tmp/foo.txt example.com
va copia/tmp/foo.txt
într-un fișier localexample.com
)-r
, deoarece acest lucru nu este necesar pentru copierea fișierelor individuale (‘ este folosit pentru a recursiv copia directoare)