15%

Economisește 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul:

Skills
Începeți
28.10.2024

Copierea Fișierelor prin SSH: Ghid Complet pentru SCP, rsync și SFTP

SSH (Secure Shell) este coloana vertebrală a gestionării securizate a serverelor la distanță. Indiferent dacă ești un dezvoltator care implementează cod, un administrator de sistem care gestionează infrastructura sau un utilizator avansat care întrețin un mediu de VPS Hosting, transferul securizat de fișiere între mașini este o sarcină pe care o vei efectua constant.

Acest ghid cuprinzător acoperă toate metodele principale de copiere a fișierelor prin SSH — inclusiv SCP, rsync, SFTP și automatizarea bazată pe chei — cu sintaxă din lumea reală, exemple practice și sfaturi de experți pentru a te ajuta să lucrezi mai rapid și mai securizat.

De ce să folosești SSH pentru transferuri de fișiere?

Înainte de a intra în detalii despre instrumente, merită să înțelegi de ce transferul de fișiere bazat pe SSH este standardul industriei atât pentru administratorii de servere, cât și pentru dezvoltatori.

  • Criptare end-to-end: Fiecare octet de date — inclusiv credențialele, comenzile și conținutul fișierelor — este criptat în tranzit folosind algoritmi criptografici moderni. Acest lucru face transferurile SSH imune la interceptarea pachetelor și atacurile de tip man-in-the-middle.
  • Nu este necesar software suplimentar: SSH este preinstalat pe practic orice sistem Linux/Unix și este disponibil nativ pe Windows 10+ și macOS.
  • Versatilitate: O singură conexiune SSH poate gestiona sesiuni shell interactive, transferuri de fișiere, redirecționare de porturi și scripturi automate.
  • Prietenos cu automatizarea: SSH se integrează perfect cu job-uri cron, pipeline-uri CI/CD și scripturi de backup, permițând transferuri de fișiere complet automatizate, fără parolă.
  • Fiabilitate: Conexiunile SSH gestionează întreruperile de rețea cu grație, mai ales când sunt combinate cu instrumente precum rsync.

Metoda 1: Copierea fișierelor cu SCP (Secure Copy Protocol)

SCP este cel mai simplu și mai utilizat instrument pentru transferuri de fișiere unice prin SSH. Funcționează prin utilizarea conexiunii SSH existente pentru a copia securizat fișiere între gazde.

Sintaxa de bază SCP

scp [options] [source] [destination]

Exemplul 1: Încărcarea unui fișier de pe mașina locală pe serverul de la distanță

scp /path/to/local/file username@remote_host:/path/to/remote/destination

Detaliere:

    /path/to/local/file — fișierul pe care dorești să îl transferi de pe mașina ta locală
    username@remote_host — numele tău de utilizator SSH și numele de gazdă sau adresa IP a serverului
    /path/to/remote/destination — directorul țintă sau calea fișierului pe serverul de la distanță
    
    Exemplul 2: Descărcarea unui fișier de pe serverul de la distanță pe mașina locală
    scp username@remote_host:/path/to/remote/file /path/to/local/destination
    Pur și simplu inversează sursa și destinația pentru a prelua un fișier de pe server pe mașina ta locală.
    Exemplul 3: Copierea unui întreg director în mod recursiv
    scp -r /path/to/local/directory username@remote_host:/path/to/remote/destination
    Indicatorul -r îi spune SCP să copieze directorul și toate conținuturile sale în mod recursiv, inclusiv subdirectoarele imbricate.
    Opțiuni utile SCP
    
    
    
    
    Opțiune
    Descriere
    
    
    
    
    -P [port]
    Specifică un port SSH personalizat (notă: majusculă -P, spre deosebire de minuscula -p a SSH)
    
    
    -C
    Activează compresia pentru transferuri mai rapide pe conexiuni lente
    
    
    -i [identity_file]
    Folosește o cheie privată SSH specifică pentru autentificare
    
    
    -l [limit]
    Limitează utilizarea lățimii de bandă în Kbit/s
    
    
    -q
    Mod silențios — suprimă afișarea progresului
    
    
    -v
    Mod detaliat — util pentru depanarea problemelor de conexiune
    
    
    
    
    Când să folosești SCP
    SCP este ideal pentru transferuri de fișiere rapide, unice unde simplitatea contează. Nu necesită configurare și funcționează imediat pe orice sistem cu SSH instalat. Cu toate acestea, pentru directoare mari sau transferuri repetate, rsync este o alegere semnificativ mai bună.
    Metoda 2: Copierea fișierelor cu rsync
    rsync este alegerea profesioniștilor pentru sincronizarea și transferul de fișiere prin SSH. Caracteristica sa principală este transferul delta: în loc să copieze fișiere întregi, rsync analizează sursa și destinația și transferă doar porțiunile modificate. Acest lucru economisește cantități enorme de timp și lățime de bandă atunci când se lucrează cu fișiere mari sau directoare care sunt actualizate frecvent.
    Sintaxa de bază rsync
    rsync [options] [source] [destination]
    Exemplul 1: Încărcarea unui fișier de pe mașina locală pe serverul de la distanță
    rsync -avz /path/to/local/file username@remote_host:/path/to/remote/destination
    Exemplul 2: Sincronizarea unui întreg director pe un server de la distanță
    rsync -avz /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    > Important: Observă bara oblică finală / după directorul sursă. Cu o bară oblică finală, rsync copiază *conținuturile* directorului. Fără ea, rsync copiază directorul însuși ca subdirector al destinației.
    Exemplul 3: Oglindirea unui director (ștergerea fișierelor eliminate din sursă)
    rsync -avz --delete /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    Indicatorul --delete asigură că fișierele șterse din sursă sunt eliminate și din destinație, menținând ambele locații perfect sincronizate.
    Exemplul 4: Utilizarea unui port SSH personalizat
    rsync -avz -e "ssh -p 2222" /path/to/local/directory/ username@remote_host:/path/to/remote/destination/
    Opțiuni utile rsync
    
    
    
    
    Opțiune
    Descriere
    
    
    
    
    -a
    Mod arhivă: păstrează permisiunile, marcajele de timp, legăturile simbolice și proprietatea
    
    
    -v
    Detaliat: afișează progresul fișier cu fișier în timpul transferului
    
    
    -z
    Compresie: reduce datele transferate prin rețea
    
    
    --delete
    Șterge fișierele de la destinație care nu mai există la sursă
    
    
    --progress
    Afișează progresul în timp real pentru fiecare fișier
    
    
    --exclude
    Exclude fișiere sau tipare specifice (ex., --exclude '*.log')
    
    
    -n sau --dry-run
    Simulează transferul fără a copia efectiv nimic
    
    
    -e "ssh -p [port]"
    Specifică un port SSH personalizat
    
    
    --bwlimit=[KB/s]
    Limitează viteza de transfer pentru a evita saturarea conexiunii
    
    
    
    
    Când să folosești rsync
    Folosește rsync pentru backup-uri, implementări și orice sarcină recurentă de sincronizare. Este deosebit de puternic atunci când gestionezi baze de cod mari, biblioteci media sau exporturi de baze de date pe un Server Dedicat unde eficiența lățimii de bandă și integritatea datelor sunt critice.
    Metoda 3: Copierea fișierelor între două servere de la distanță
    O capacitate mai puțin cunoscută, dar extrem de utilă atât a SCP, cât și a rsync, este abilitatea de a transfera fișiere direct între două servere de la distanță — fără a ruta datele prin mașina ta locală. Acest lucru este de neprețuit atunci când migrezi servere sau sincronizezi date între instanțe cloud.
    Copierea fișierelor între două servere de la distanță cu SCP
    scp username1@remote_host1:/path/to/file username2@remote_host2:/path/to/destination
    Copierea fișierelor între două servere de la distanță cu rsync
    rsync -avz username1@remote_host1:/path/to/source/ username2@remote_host2:/path/to/destination/
    > Notă: Pentru ca transferurile server-la-server să funcționeze, serverul sursă trebuie să poată stabili o conexiune SSH la serverul destinație. Poate fi necesar să configurezi chei SSH pe serverul sursă sau să folosești redirecționarea agentului SSH (ssh -A).
    Transfer server-la-server prin tunelare SSH (metodă alternativă)
    Dacă SSH direct server-la-server nu este posibil din cauza restricțiilor de firewall, poți redirecționa transferul prin mașina ta locală folosind tar și ssh:
    ssh username1@remote_host1 "tar czf - /path/to/source" | ssh username2@remote_host2 "tar xzf - -C /path/to/destination"
    Aceasta transmite în flux o arhivă comprimată de pe serverul 1 direct în serverul 2 prin sesiunea terminalului tău local.
    Metoda 4: Copierea fișierelor cu SFTP (SSH File Transfer Protocol)
    SFTP oferă o experiență interactivă, similară FTP printr-o conexiune SSH criptată. Spre deosebire de SCP, care este un instrument cu o singură comandă, SFTP deschide o sesiune persistentă în care poți naviga prin directoare, încărca, descărca, redenumi și șterge fișiere în mod interactiv.
    Pornirea unei sesiuni SFTP
    sftp username@remote_host
    Vei fi dus la un prompt SFTP (sftp>), de unde poți rula următoarele comenzi:
    Comenzi esențiale SFTP
    
    
    
    
    Comandă
    Descriere
    
    
    
    
    ls
    Listează fișierele din directorul de la distanță curent
    
    
    lls
    Listează fișierele din directorul local curent
    
    
    cd /remote/path
    Schimbă directorul de la distanță
    
    
    lcd /local/path
    Schimbă directorul local
    
    
    put /local/file /remote/destination
    Încarcă un fișier pe serverul de la distanță
    
    
    get /remote/file /local/destination
    Descarcă un fișier de pe serverul de la distanță
    
    
    mput *.txt
    Încarcă mai multe fișiere care corespund unui tipar
    
    
    mget *.log
    Descarcă mai multe fișiere care corespund unui tipar
    
    
    mkdir /remote/newdir
    Creează un director pe serverul de la distanță
    
    
    rm /remote/file
    Șterge un fișier de pe serverul de la distanță
    
    
    exit sau quit
    Închide sesiunea SFTP
    
    
    
    
    Conectarea la un port SSH personalizat prin SFTP
    sftp -P 2222 username@remote_host
    Când să folosești SFTP
    SFTP este cel mai potrivit pentru sesiuni interactive de gestionare a fișierelor — de exemplu, când trebuie să navighezi printr-o structură de directoare de la distanță, să descarci selectiv fișiere de jurnal sau să încarci fișiere de configurare pe un server web. Mulți clienți GUI (cum ar fi FileZilla, Cyberduck și WinSCP) folosesc SFTP ca protocol de bază, făcându-l accesibil și utilizatorilor non-tehnici.
    Metoda 5: Automatizarea transferurilor de fișiere cu autentificarea prin chei SSH
    Introducerea manuală a unei parole pentru fiecare transfer de fișiere este ineficientă și incompatibilă cu automatizarea. Autentificarea bazată pe chei SSH rezolvă această problemă permițând autentificări fără parolă, criptografic securizate — o condiție prealabilă pentru orice flux de lucru automatizat de backup sau implementare.
    Pasul 1: Generarea unei perechi de chei SSH
    Pe mașina ta locală, rulează:
    ssh-keygen -t ed25519 -C "your_email@example.com"
    > Notă: ed25519 este algoritmul modern recomandat. Folosește -t rsa -b 4096 dacă ai nevoie de compatibilitate cu sisteme mai vechi.
    Urmează instrucțiunile pentru a salva cheia (locație implicită: ~/.ssh/id_ed25519) și opțional setează o frază de acces pentru securitate suplimentară.
    Pasul 2: Copierea cheii publice pe serverul de la distanță
    ssh-copy-id username@remote_host
    Aceasta adaugă cheia ta publică la fișierul ~/.ssh/authorized_keys de pe serverul de la distanță. Ți se va solicita parola o ultimă dată.
    Dacă ssh-copy-id nu este disponibil, poți face acest lucru manual:
    cat ~/.ssh/id_ed25519.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    Pasul 3: Testarea autentificării fără parolă
    ssh username@remote_host
    Dacă te conectezi fără a fi solicitat o parolă, autentificarea bazată pe chei funcționează corect.
    Pasul 4: Automatizarea transferurilor cu un script shell
    Cu SSH fără parolă configurat, poți acum automatiza transferurile de fișiere în job-uri cron sau scripturi:
    #!/bin/bash
    # Daily backup script
    rsync -avz --delete /var/www/html/ username@backup_server:/backups/www/
    Adaugă aceasta în crontab-ul tău (crontab -e) pentru a rula nocturn:
    0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
    Depanarea problemelor comune la transferul de fișiere SSH
    Chiar și administratorii experimentați întâmpină probleme. Iată cele mai comune probleme și soluțiile lor:
    Acces refuzat (publickey)
    
    Verifică dacă cheia publică este adăugată corect la ~/.ssh/authorized_keys pe serverul de la distanță
    Verifică dacă ~/.ssh are permisiunile 700 și authorized_keys are permisiunile 600
  • Confirmă că daemonul SSH permite autentificarea prin chei (PubkeyAuthentication yes în /etc/ssh/sshd_config)
  • Conexiune refuzată

    • Verifică dacă serviciul SSH rulează: systemctl status sshd
    • Verifică dacă portul corect este utilizat
    • Revizuiește regulile de firewall: ufw status sau iptables -L

    Viteza de transfer este lentă

    • Activează compresia: adaugă -C la SCP sau -z la rsync
    • Folosește un cifru mai rapid: ssh -c aes128-ctr (mai puțin securizat, dar mai rapid pe conexiuni cu latență mare)
    • Pentru transferuri mari, ia în considerare rsync cu --bwlimit pentru a evita saturarea rețelei

    Verificarea cheii gazdei a eșuat

    • Amprenta SSH a serverului de la distanță s-a schimbat (ar putea indica o problemă de securitate sau o reconstruire a serverului)
    • Elimină cheia veche: ssh-keygen -R remote_host
    • Reconectează-te și verifică noua amprentă înainte de a o accepta

    Alegerea instrumentului potrivit: SCP vs. rsync vs. SFTP

    CaracteristicăSCPrsyncSFTP
    Ușurință în utilizare⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐
    Transferuri delta
    Sincronizare director✅ (recursiv)✅ (cu --delete)✅ (manual)
    Mod interactiv
    Automatizare✅ (cu scripturi)
    Eficiența lățimii de bandăScăzutăRidicatăScăzută
    Cel mai bun pentruTransferuri rapide uniceBackup-uri & sincronizareNavigare interactivă

    Securizarea transferurilor de fișiere SSH: Cele mai bune practici

    Indiferent de instrumentul pe care îl folosești, urmează aceste bune practici de securitate pentru a-ți proteja serverele și datele:

    1. Dezactivează autentificarea prin parolă — Folosește exclusiv chei SSH și setează PasswordAuthentication no în /etc/ssh/sshd_config
    2. Schimbă portul SSH implicit — Mutarea de la portul 22 reduce dramatic tentativele automate de forță brută
    3. Folosește fail2ban — Blochează automat IP-urile care eșuează în mod repetat autentificarea
    4. Restricționează accesul SSH prin IP — Folosește reguli de firewall sau directive AllowUsers pentru a limita cine se poate conecta
    5. Menține SSH actualizat — Actualizează regulat OpenSSH pentru a remedia vulnerabilitățile cunoscute
    6. Folosește algoritmi de chei puternici — Preferă ed25519 sau rsa-4096 față de algoritmi mai vechi și mai slabi
    7. Securizează-ți aplicațiile web — Combină securitatea SSH cu un Certificat SSL pentru a cripta tot traficul către serviciile tale web

    Întrebări frecvente

    Care este diferența dintre SCP și SFTP?

    SCP este un instrument de linie de comandă non-interactiv conceput pentru transferuri rapide de fișiere cu o singură comandă. SFTP este un protocol interactiv care îți permite să navighezi, să gestionezi, să încarci și să descarci fișiere într-o interfață bazată pe sesiuni. Ambele folosesc SSH pentru criptare.

    Pot folosi rsync fără SSH?

    Da — rsync are propriul mod daemon care funcționează fără SSH, dar este mai puțin securizat. Pentru orice transfer orientat spre internet, folosește întotdeauna rsync prin SSH (rsync -e ssh).

    Cum transfer fișiere dacă serverul meu folosește un port SSH non-standard?

    Folosește indicatorul -P cu SCP (scp -P 2222) sau opțiunea -e "ssh -p 2222" cu rsync. Pentru SFTP, folosește sftp -P 2222.

    Este SCP depreciat?

    Dezvoltatorii OpenSSH au menționat că protocolul de bază al SCP are limitări și recomandă utilizarea SFTP sau rsync pentru fluxuri de lucru noi. Cu toate acestea, SCP rămâne disponibil pe scară largă și funcțional pe practic toate sistemele.

    Concluzie

    Stăpânirea transferului de fișiere bazat pe SSH este o abilitate esențială pentru oricine gestionează servere, implementează aplicații sau întrețin infrastructuri la distanță. Fiecare instrument are locul său:

    • SCP este soluția ta pentru transferuri rapide, simple, unice
    • rsync este indispensabil pentru backup-uri, implementări și sincronizarea eficientă a seturilor mari de date
    • SFTP excelează în sesiuni interactive în care trebuie să navighezi și să gestionezi fișiere din mers

    Combinarea acestor instrumente cu autentificarea prin chei SSH și practici solide de securitate îți oferă un flux de lucru de transfer de fișiere robust, automatizat și securizat, care se scalează de la un singur cont de Găzduire Web Partajată până la arhitecturi complexe cu mai multe servere pe Servere Dedicate.

    Dacă cauți un mediu de găzduire fiabil și performant pentru a pune în practică aceste abilități, explorează planurile de VPS Hosting ale AlexHost — construite pentru dezvoltatori și administratori de sistem care cer acces root complet, stocare SSD și conectivitate de rețea de nivel enterprise.

    15%

    Economisește 15% la toate serviciile de găzduire

    Testează-ți abilitățile și obține Reducere la orice plan de găzduire

    Utilizați codul:

    Skills
    Începeți