Linux-beheerders moeten vertrouwd zijn met de command-line-omgeving. Aangezien GUI (Grafische Gebruikersinterface) op Linux-servers niet gebruikelijk is om te worden geïnstalleerd.
SSH kan het populairste protocol zijn om Linux-beheerders in staat te stellen de servers op een veilige manier te beheren. Gebouwd in met SSH commando is er SCP commando, dat wordt gebruikt om bestand(en) tussen servers te kopiëren op een veilige manier.
Basisyntaxis van SCP-commando
Het onderstaande commando zal lezen als kopieer “bron_bestandsnaam” naar “bestemming_map” op “bestemming_host” met behulp van het “gebruikersnaam” account.
scp source_file_name username@destination_host:destination_folder
Er zijn veel parameters in het SCP commando die je kunt gebruiken. Hier zijn de parameters die je misschien dagelijks gebruikt.
Inhoudsopgave
Bestanden Veilig Overbrengen in Linux
De basis SCP opdracht zonder parameters zal de bestanden achtergrond kopiëren. Gebruikers zien niets tenzij het proces is voltooid of er een fout optreedt.
Je kunt de parameter ” -v
” gebruiken om debug-informatie op het scherm af te drukken. Het kan je helpen bij het debuggen van verbinding, authenticatie en configuratieproblemen.
Bestand Kopieren van Lokale Host naar Externe Server
De volgende opdracht kopieert een bestand “scp-cheatsheet.pdf” van een lokaal naar een externe Linux-systeem onder de /home/tecmint directory.
$ scp -v scp-cheatsheet.pdf [email protected]:/home/tecmint/.
Voorbeeld Uitvoer:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -t /home/tecmint/. OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_xmss type -1 ...
Bestand kopiëren vanaf een externe host naar een lokaal host
De volgende opdracht kopieert een bestand “ssh-cheatsheet.pdf” van een externe host naar een lokaal systeem onder de /home/tecmint directory.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.
Voorbeeld Uitvoer:
Executing: program /usr/bin/ssh host 192.168.0.183, user tecmint, command scp -v -f /home/ravi/ssh-cheatsheet.pdf OpenSSH_8.2p1 Ubuntu-4ubuntu0.5, OpenSSL 1.1.1f 31 Mar 2020 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files debug1: /etc/ssh/ssh_config line 21: Applying options for * debug1: Connecting to 192.168.0.183 [192.168.0.183] port 22. debug1: Connection established. debug1: identity file /home/tecmint/.ssh/id_rsa type -1 debug1: identity file /home/tecmint/.ssh/id_rsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_dsa type -1 debug1: identity file /home/tecmint/.ssh/id_dsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk type -1 debug1: identity file /home/tecmint/.ssh/id_ecdsa_sk-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519 type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519-cert type -1 debug1: identity file /home/tecmint/.ssh/id_ed25519_sk type -1 ...
Bestand kopiëren vanaf een externe host naar een andere host
De volgende opdracht kopieert een bestand “ssh-cheatsheet.pdf” van een externe host naar een ander externe host-systeem onder de /home/tecmint directory.
$ scp -v [email protected]:/home/ravi/ssh-cheatsheet.pdf [email protected]:/home/anusha/.
Bestanden kopiëren met oorspronkelijke creatiedatum en tijd
De “-p
” parameter behoudt de oorspronkelijke wijzigings- en toegangs tijden van bestanden tijdens het kopiëren van bestanden, samen met de geschatte tijd en de verbindingssnelheid die op het scherm verschijnen.
$ scp -p scp-cheatsheet.pdf [email protected]:/home/tecmint/.
Voorbeeld Uitvoer:
[email protected]'s password: scp-cheatsheet.pdf 100% 531 721.4KB/s 00:00
Scp-compressie tijdens het kopiëren van bestanden
Een van de parameters die uw bestandsoverdracht kan versnellen, is de “-C
” parameter, die wordt gebruikt om uw bestanden te comprimeren tijdens het overdragen. Het bijzondere is dat de compressie alleen plaatsvindt in het netwerk. Zodra het bestand is aangekomen op de bestemming server, zal het terugkeren naar de oorspronkelijke grootte zoals voor de compressie.
Bekijk deze opdrachten. Het gebruikt een enkel bestand van 93 Mb.
$ scp -pv messages.log [email protected]:.
Voorbeeld uitvoer:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: Sending command: scp -v -p -t. File mtime 1323853868 atime 1380425711 Sending file timestamps: T1323853868 0 1380425711 0 messages.log 100% 93MB 58.6KB/s 27:05 Transferred: sent 97614832, received 25976 bytes, in 1661.3 seconds Bytes per second: sent 58758.4, received 15.6 debug1: Exit status 0
Het kopiëren van bestanden zonder de “-C
” parameter resulteert in 1661,3 seconden. U kunt het resultaat vergelijken met de opdracht hieronder die de “-C
” parameter gebruikt.
$ scp -Cpv messages.log [email protected]:.
Voorbeeld uitvoer:
Executing: program /usr/bin/ssh host 202.x.x.x, user mrarianto, command scp -v -p -t. OpenSSH_6.0p1 Debian-3, OpenSSL 1.0.1c 10 May 2012 debug1: Reading configuration data /etc/ssh/ssh_config debug1: /etc/ssh/ssh_config line 19: Applying options for * debug1: Connecting to 202.x.x.x [202.x.x.x] port 22. debug1: Connection established. debug1: identity file /home/pungki/.ssh/id_rsa type -1 debug1: Host '202.x.x.x' is known and matches the RSA host key. debug1: Found key in /home/pungki/.ssh/known_hosts:1 debug1: ssh_rsa_verify: signature correct debug1: Next authentication method: publickey debug1: Trying private key: /home/pungki/.ssh/id_rsa debug1: Next authentication method: password [email protected]'s password: debug1: Enabling compression at level 6. debug1: Authentication succeeded (password). Authenticated to 202.x.x.x ([202.x.x.x]:22). debug1: channel 0: new [client-session] debug1: Sending command: scp -v -p -t . File mtime 1323853868 atime 1380428748 Sending file timestamps: T1323853868 0 1380428748 0 Sink: T1323853868 0 1380428748 0 Sending file modes: C0600 97517300 messages.log messages.log 100% 93MB 602.7KB/s 02:38 Transferred: sent 8905840, received 15768 bytes, in 162.5 seconds Bytes per second: sent 54813.9, received 97.0 debug1: Exit status 0 debug1: compress outgoing: raw data 97571111, compressed 8806191, factor 0.09 debug1: compress incoming: raw data 7885, compressed 3821, factor 0.48
Zoals u kunt zien, wanneer u compressie gebruikt, is het overdracht proces gedaan in 162,5 seconden. Het is 10 keer sneller dan het niet gebruiken van de “-C
” parameter. Als u veel bestanden over het netwerk kopieert, zou de “-C
” parameter u helpen om de totale tijd die u nodig hebt te verminderen.
Het ding dat we moeten opmerken is dat de compressiemethode niet werkt op elk bestand. Als het bronbestand al gecomprimeerd is, zult u daar geen verbetering vinden. Bestanden zoals .zip, .rar, foto’s, en .iso bestanden zullen niet worden beïnvloed door de “-C
” parameter.
Wijzig SCP Cipher om bestanden te versleutelen
Standaard gebruikt SCP “AES-128” om bestanden te versleutelen. Als u wilt overschakelen naar een ander cijfer om het te versleutelen, kunt u het “code>-c”-parameter gebruiken.
Bekijk deze opdracht.
$ scp -c 3des Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
De bovenstaande opdracht vertelt SCP om het 3des-algoritme te gebruiken om het bestand te versleutelen. Wees voorzichtig dat deze parameter met “code>-c” en niet met “code>-C”.
Bandbreedtebeperking met SCP-opdracht
Een andere parameter die misschien handig is, is de “code>-l”-parameter. De “-l“-parameter zal de bandbreedte beperken die wordt gebruikt. Het kan handig zijn als u een automatiseringscript maakt om veel bestanden te kopiëren, maar u wilt niet dat de bandbreedte wordt opgebruikt door het SCP-proces.
$ scp -l 400 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 50.3KB/s 01:13
De 400 waarde achter de “code>-l”-parameter betekent dat we de bandbreedte voor het SCP-proces beperken tot slechts 50 KB/sec.
Een ding om te onthouden is dat de bandbreedte in Kilobits/sec (kbps) wordt aangegeven. Dat betekent dat 8 bits gelijk zijn aan 1 byte.
Terwijl SCP telt in Kilobyte/sec (KB/s). Dus als je je bandbreedte wilt beperken tot een SCP maximum van slechts 50 KB/s, moet je dit instellen op 50 x 8 = 400.
SCP met een andere poort
Meestal gebruikt SCP poort 22 als standaardpoort, maar om beveiligingsredenen kun je de poort wijzigen naar een andere poort. Bijvoorbeeld, we gebruiken poort 2249.
Dan zou de opdracht er zo uit moeten zien.
$ scp -P 2249 Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 262.3KB/s 00:14
Zorg ervoor dat het een hoofdletter “P
” gebruikt, niet “p
”, aangezien “p
” al wordt gebruikt voor bewaarde tijden en modi.
SCP – Kopieer bestanden en mappen recursief
Soms moeten we de map en alle bestanden/mappen erin kopiëren. Het is beter als we dit in een enkele opdracht kunnen doen met de “-r
” parameter, die de hele map recursief kopieert.
$ scp -r documents [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13 scp.txt 100% 10KB 9.8KB/s 00:00
Wanneer het kopieerproces klaar is, vind je op de doelserver een map met de naam “documenten” met al zijn bestanden. De map “documenten” wordt automatisch aangemaakt.
SCP – Verwijder voortgangsberichten
Als u ervoor kiest om de voortgangsmeter en waarschuwings-/diagnostische berichten van SCP niet te zien, kunt u deze uitschakelen met behulp van het ” -q
” -parameter. Hier is een voorbeeld.
$ scp -q Label.pdf [email protected]:. [email protected]'s password: pungki@mint ~/Documents $
Zoals u kunt zien, na het invoeren van het wachtwoord, is er geen informatie over het SCP-proces. Nadat het proces is voltooid, ziet u een prompt weer.
SCP – Bestanden kopiëren met behulp van een proxy
De proxyserver wordt meestal gebruikt in een kantooromgeving. In de oorspronkelijke vorm is SCP niet voorzien van een geconfigureerde proxy. Wanneer uw omgeving een proxy gebruikt, moet u ” SCP laten weten ” om te communiceren met de proxy.
Hier is het scenario. Het proxyadres is 10.0.96.6 en de proxypoort is 8080. De proxy heeft ook gebruikersauthenticatie geïmplementeerd. Eerst moet u het bestand ” ~/.ssh/config” aanmaken. Ten tweede, plaats deze opdracht erin.
ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth
Vervolgens moet u het bestand ” ~/.ssh/proxyauth ” aanmaken, die bevat.
myusername:mypassword
Daarna kunt u SCP transparant als gewoonlijk doen.
Let op dat de corkscrew misschien nog niet is geïnstalleerd op uw systeem. Op mijn Linux Mint moet ik het eerst installeren, met behulp van de standaard Linux Mint installatieprocedure.
$ apt-get install corkscrew
Voor andere systemen op basis van yum, kunnen gebruikers corkscrew installeren met behulp van de volgende yum-opdracht.
# yum install corkscrew
Een ander aspect is dat aangezien het bestand “~/.ssh/proxyauth” uw “gebruikersnaam” en “wachtwoord” in tekstuele vorm bevat, moet u ervoor zorgen dat het bestand alleen toegankelijk is voor u.
Kies een ander ssh_config-bestand
Voor mobiele gebruikers die vaak wisselen tussen bedrijfsnetwerken en openbare netwerken, is het vervelend om de instellingen in SCP telkens aan te passen. Het is beter als we een ander ssh_config-bestand kunnen gebruiken dat aan onze behoeften voldoet.
Proxy wordt gebruikt in het bedrijfsnetwerk, maar niet in het openbare netwerk, en u wisselt regelmatig tussen netwerken.
$ scp -F /home/pungki/proxy_ssh_config Label.pdf [email protected]:. [email protected]'s password: Label.pdf 100% 3672KB 282.5KB/s 00:13
Het standaard “ssh_config“-bestand per gebruiker bevindt zich op “~/.ssh/config“. Het maken van een specifiek “ssh_config“-bestand met proxycompatibiliteit maakt het gemakkelijker om tussen netwerken te wisselen.
Wanneer u zich op het bedrijfsnetwerk bevindt, kunt u de “-F
“-parameter gebruiken. Wanneer u zich op een openbaar netwerk bevindt, kunt u de “-F
“-parameter overslaan.
Dat is alles over SCP. U kunt de man-pagina’s van SCP raadplegen voor meer informatie. Bent u vrij om opmerkingen en suggesties achter te laten.