Příkaz SCP v Linuxu bezpečně kopíruje soubory a adresáře mezi lokálními a vzdálenými systémy přes SSHŠifruje data během přenosu, podporuje klíče a vlastní porty a pracuje s jednoduchou syntaxí, jako je scp source targetPoužijte jej k rychlému přenosu záloh, konfigurací nebo webových dat na servery s možnostmi rekurze, omezení, komprese a přechodu mezi hostiteli.
jestli ty manage servery nebo nasazování webových stránek, naučení se příkazu SCP v Linuxu šetří čas a zajistí bezpečné přenosy. V této praktické uživatelské příručce vysvětlím, jak SCP funguje, jeho syntaxi, spolehlivé příklady, osvědčené bezpečnostní postupy a tipy od profesionálů z více než 12 let zkušeností s provozováním Linuxu, cloudových a hostingových prostředí ve velkém měřítku (včetně YouStableinfrastruktura).
Co je SCP a jak funguje?

SCP (Secure Copy) je nástroj příkazového řádku, který kopíruje soubory mezi hostiteli pomocí SSH pro ověřování a šifrování. Ve výchozím nastavení se připojuje k TCP portu 22 a podporuje hesla nebo SSH klíčeModerní otevřenéSSH verze používají SFTP protokol „pod kapotou“ pro bezpečnější zpracování cest, ale příkaz scp a jeho známá syntaxe zůstávají k dispozici.
- Šifrováno během přenosu (stejné krypto a klíče jako SSH)
- Funguje lokálně na vzdálené zařízení, vzdáleně na lokální zařízení a vzdáleně na vzdálené zařízení.
- Jednoduchá a předvídatelná syntaxe s možnostmi rekurze, portů, omezení šířky pásma, komprese a přechodu mezi hostiteli
- Ideální pro rychlé, jednorázové přenosy; pro funkce synchronizace/obnovení zvažte rsync.
Syntaxe SCP (vysvětlení za 60 sekund)
Základní formát je:
scp [options] source target
scp [options] [[user@]host1:]path1 [[user@]host2:]path2Příklady zdroje/cíle:
- Lokální soubor:
file.txtor./dir/file.txt - Vzdálený soubor:
user@server:/path/to/file.txt - IPv6 hostitel:
user@[2001:db8::1]:/path
Klíčové pravidlo: Dvojtečka na konci adresáře označuje vzdálený hostitel. Bez dvojtečky se jedná o lokální cestu. V případě vzdálených adresářů přidejte cestu za dvojtečku.
Základní příklady SCP (s jasnými případy použití)
1) Zkopírujte soubor z lokálního na vzdálený server
scp index.html user@server:/var/www/html/Použijte to k nahrání webových datových zdrojů, konfigurací nebo skriptů na server. Pokud je vzdálená cesta adresář, SCP umístí soubor do něj.
2) Zkopírujte soubor ze vzdáleného na lokální
scp user@server:/etc/nginx/nginx.conf ./Skvělé pro stahování protokolů nebo záloh konfigurace ze serveru na vaši pracovní stanici.
3) Zkopírujte celý adresář (rekurzivně)
scp -r ./site/ user@server:/var/www/html/-r rekurzivně kopíruje adresáře. Přidat -p pro zachování časových razítek a oprávnění:
scp -rp ./site/ user@server:/var/www/html/4) Zadejte nevýchozí nastavení SSH přístav
scp -P 2222 backup.tar.gz user@server:/backups/Důležité: Příznak portu je velký. -P (malá písmena -p je „zachovat“).
5) Použijte SSH soukromý klíč (PEM/ED25519/RSA)
scp -i ~/.ssh/id_ed25519 app.war ubuntu@server:/opt/apps/Můžete také projít SSH obecné možnosti konfigurace:
scp -o IdentityFile=~/.ssh/key.pem -o IdentitiesOnly=yes file ubuntu@server:/home/ubuntu/6) Zpracování mezer, skrytých souborů a zástupných znaků
Cesty uveďte do uvozovek a vzdálené zástupné znaky uveďte do uvozovek, aby se rozbalovaly na vzdáleném hostiteli:
# Local file with spaces
scp "My Report.pdf" user@server:/home/user/docs/
# Remote wildcard: quote to prevent local shell expansion
scp 'user@server:/var/log/*.log' ./logs/
# Copy hidden files
scp -r ./app/.env user@server:/var/www/app/7) Vzdálené kopie (přes váš lokální počítač)
Použijte -3 kopírování mezi dvěma vzdálenými servery, směrování přes vašeho klienta (data procházejí přes váš počítač):
scp -3 admin@hostA:/var/backups/db.sql admin@hostB:/var/restore/8) Použijte skokového hostitele (baštu)
Pro soukromé servery za baštou, -J zjednodušuje směrování:
scp -J bastion@public-gw ubuntu@internal-app:/etc/hosts ./Musíte znát možnosti SCP a jejich funkce
-rRekurzivní kopie (adresáře)-pZachovat časová razítka, režimy-P <port>: SSH port (velké P)-i <key>Použít soubor identity (soukromý klíč)-o <ssh_option>: Složit SSH možnosti (např.-o StrictHostKeyChecking=yes)-CKomprese (užitečná pro text, konfigurace, protokoly)-l <limit>Omezení šířky pásma v kbit/s (např.-l 4000)-J <jump>Skokový hostitel (bašta)-3Vzdálené připojení přes lokální-4/-6Síla IPv4/IPv6-F <file>Použít alternativní SSH konfigurační soubor-q/-vTiché / Podrobné (přidat další příkazy v pro ladění)
SSH Klíče a konfigurace pro Frictionless SCP
Výzvy k zadání hesla vás zpomalují a nejsou ideální pro automatizaci. Používejte SSH klíče a SSH konfigurační soubor pro plynulý chod.
Vygenerujte klíč a autorizujte ho
# Create an ED25519 key (fast and secure)
ssh-keygen -t ed25519 -C "you@machine"
# Copy the public key to the server
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@serverIf ssh-copy-id není k dispozici, vložte veřejný klíč do ~/.ssh/authorized_keys na serveru a nastavte oprávnění:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysZjednodušte pomocí ~/.ssh/config
Host web-prod
HostName 203.0.113.10
User ubuntu
IdentityFile ~/.ssh/id_ed25519
Port 22
Compression yes
# Then simply run:
scp ./build.zip web-prod:/var/www/html/Nejlepší bezpečnostní postupy pro SCP
- Ověřte klíče hostitele při prvním připojení; nezakazujte kontroly pomocí
-o StrictHostKeyChecking=nos výjimkou kontrolované CI. - Preferujte SSH klíče před hesly; omezte klíče správnými oprávněními a hesly.
- Používejte účty s nejnižšími oprávněními; pokud to není nutné, nepoužívejte root.
- Ztvrdnout SSHV případě potřeby použijte nestandardní port, zakažte ověřování heslem, vynuťte silné šifry a MAC adresy.
- Audit přenosů prostřednictvím protokolů (
/var/log/auth.lognebo systémový deník) v regulovaném prostředí.
Řešení problémů s SCP (rychlé opravy)
Oprávnění zamítnuto (veřejný klíč, heslo)
- Ujistěte se, že používáte správného uživatele a klíč (
-ior SSH konfigurace). - Zkontrolujte oprávnění na straně serveru
~/.ssh(700) aauthorized_keys(600). - Běh
scp -vabyste viděli, která klávesa se pokouší o zadání.
Žádný takový soubor nebo adresář
- Vzdálené cesty/zástupné znaky uveďte v citaci, aby je váš lokální shell nerozšiřoval.
- Ověřte existenci adresáře na cíli; vytvořte jej pomocí ssh user@server „mkdir“ -p /cesta“ před kopírováním.
- Používejte absolutní cesty, abyste se vyhnuli záměně s pracovním adresářem vzdáleného shellu.
Připojení vypršelo nebo bylo odmítnuto
- Zkontrolujte skupiny firewallu/zabezpečení pro TCP 22 (nebo váš vlastní port).
- Ověřit si DNS nebo použít IP adresu serveru; vynutit IPv4 s
-4V případě potřeby. - Použijte
scp -vdiagnostikovat dosažitelnost portu/hostitele a vyjednávání o autorizaci.
scp: příkaz nenalezen (vzdálený)
U minimálních obrázků zajistěte, aby byla položka OtevřítSSH jsou nainstalovány inženýrské sítě a SFTP Podsystém je povolen. Aktuální otevřeníSSH použití SCP SFTP ve výchozím nastavení, který musí být k dispozici na serveru.
Tipy pro výkon a spolehlivost
- Pro přenosy s velkým množstvím textu použijte kompresi:
scp -C logs.tar.gz user@server:/tmp/ - Pokud máte, zvolte rychlé šifry CPU prostor nad hlavou (liší se podle otevření)SSH verze), např.
-c aes128-gcm@openssh.comor-c chacha20-poly1305@openssh.com. - Omezení šířky pásma pro ochranu šířky pásma:
scp -l 8000 big.img user@server:/data/(8000 kbit/s ≈ 1 MB/s). - Paralelizace: scp sám o sobě není paralelní ani obnovitelná funkce. Pro velké stromy nebo nestabilní odkazy preferujte
rsync -azPor SFTP se životopisem. - Vyhněte se zbytečným režijním nákladům na šifrování v síti LAN použitím rychlejších šifer; v síti WAN může pomoci komprese.
SCP vs. rsync vs. SFTPKterý byste měli použít?
- Použijte SCP, když potřebujete rychlou, jednorázovou a šifrovanou kopii s jednoduchou syntaxí.
- Použijte rsync pro přírůstkové synchronizace, podporu obnovení, kontrolní součty a robustní zrcadlení adresářů.
- Použijte SFTP pro interaktivní relace, obnovitelné nahrávání/stahování a detailní operace se soubory.
- Používejte rclone pro úložiště objektů (S3, GCS), nativní cloudové pracovní postupy a synchronizaci mezi poskytovateli.
Poznámka: Navzdory titulkům o „zastarávání SCP“ moderní OpenSSH zachovává příkaz scp, ale implementuje přenosy přes SFTP ve výchozím nastavení pro bezpečnější chování. Scp můžete s jistotou používat i na aktuálních systémech.
Příklady cloudu: AWS, GCP, Azure
- AWS EC2 (Ubuntu):
scp -i ~/keys/aws.pem app.tar.gz ubuntu@<public-ip>:/opt/ - AWS EC2 (Amazon Linux):
scp -i ~/keys/aws.pem site.zip ec2-user@<public-ip>:/var/www/html/ - Výpočetní engine GCP:
scp -i ~/.ssh/gcp ed@<external-ip>:/var/log/syslog ./(ujistěte se, že firewall umožňuje SSH) - Virtuální počítač Azure:
scp -P 22 -i ~/.ssh/azure key.pub azureuser@<public-ip>:~/.ssh/ - Za baštou:
scp -J user@bastion targetuser@10.0.0.10:/etc/nginx/nginx.conf ./
Automatizace SCP ve skriptech a cronu
Pro noční zálohy nebo nasazení CI spárujte klíče s uzamčeným uživatelem a explicitním SSH možnosti. Zde je spolehlivý vzorec:
#!/usr/bin/env bash
set -euo pipefail
HOST="web-prod"
SRC_DIR="/var/backups"
DST_PATH="/backups/$(date +%F)"
LOG="/var/log/backup_scp.log"
mkdir -p "$SRC_DIR"
tar -czf "$SRC_DIR/site-$(date +%F).tar.gz" /var/www/html/
# Copy with compression, bandwidth limit, and strict host key checking
scp -C -l 8000 -o BatchMode=yes -o StrictHostKeyChecking=yes \
"$SRC_DIR/site-$(date +%F).tar.gz" "${HOST}:${DST_PATH}/" >> "$LOG" 2>&1
echo "Backup completed at $(date)" >> "$LOG"Plánování pomocí cronu (crontab -e). U datových sad s vysokým počtem změn nebo velkých adresářů přepněte na rsync, abyste se vyhnuli opětovnému nahrávání nezměněných souborů.
Tipy z praxe od hostingových operátorů
- Citace vzdálených globů:
scp 'user@host:/var/log/app/*.log' ./zabraňuje chybám lokálního rozšíření shellu. - Používejte aliasy hostitelů v
~/.ssh/configstandardizovat porty, klíče a jump hostitele v celém týmu. - Nasadit balíčky jako archivy (
tar.gz) namísto tisíců malých souborů; SCP efektivněji zpracovává menší počet větších souborů. - Omezte provoz během pracovní doby s
-lk ochraně provozu zákazníků; zrušte omezení mimo otevírací dobu. - V CI/CD vynucujte přísné kontroly klíčů hostitele a zapínejte klíče hostitele, abyste předešli rizikům MITM.
Nejčastější dotazy
Je SCP zastaralé? Mám ho stále používat?
Příkaz scp stále existuje a je udržován. Novější OtevřítSSH verze implementují scp pomocí SFTP ve výchozím nastavení pro bezpečnější chování. Pro rychlé a bezpečné kopie je SCP v pořádku; pro obnovitelné, inkrementální přenosy použijte rsync nebo SFTP.
Jak specifikuji port pomocí SCP?
Používejte velká písmena -P, například: scp -P 2222 file user@server:/path/Nebo nastavte port v ~/.ssh/config pro alias hostitele.
Jak zkopíruji celou složku pomocí SCP?
přidat -r pro rekurzi a -p pro zachování metadat: scp -rp ./folder user@server:/path/Pro velké stromy a opakované synchronizace zvažte rsync.
Jak mohu použít PEM/soukromý klíč s SCP?
Použijte -i: scp -i ~/keys/key.pem file ubuntu@<ip>:/path/Můžete také definovat IdentityFile in ~/.ssh/config pro čistší příkaz a nastavení IdentitiesOnly yes.
Může SCP obnovit přerušené převody?
Ne. SCP postrádá nativní životopis. Použijte. rsync -P or SFTPJe reget/reput pro obnovitelné přenosy, zejména přes nestabilní odkazy nebo pro velké soubory.
Proč se SCP pořád ptá na mé heslo?
Pravděpodobně chybí nebo se neshoduje SSH klíče, nesprávný uživatel nebo povolení na straně serveru ~/.ssh/authorized_keysZajistěte správné -i soubor, sada chmod 700 ~/.ssh a chmod 600 ~/.ssh/authorized_keysa ověřte si SSH konfigurace.
Jak ověřím, že můj převod SCP byl úspěšný?
SCP se v případě úspěchu ukončí s hodnotou 0. Pro kritické pracovní postupy porovnejte kontrolní součty: sha256sum file lokálně i vzdáleně po přenosu. Pro velké adresáře preferujte rsync s kontrolními součty.
Závěr
Příkaz SCP v Linuxu nabízí rychlý, bezpečný a přímočarý způsob přesunu souborů mezi servery pomocí SSHZvládněte základní možnosti (-r, -p, -P, -i, -C, -J, -l), přijmout SSH klíče a konfigurace a spoléhat se na rsync/SFTP když potřebujete životopis a synchronizaci. Se správnými postupy a spolehlivým hostingovým partnerem, jako je YouStable, budete bezpečně a efektivně přenášet data v jakémkoli měřítku.