Εντολή SCP Linux – Ασφαλής μεταφορά αρχείων σε Linux


Οι διαχειριστές Linux θα πρέπει να είναι εξοικειωμένοι με το περιβάλλον της γραμμής εντολών. Δεδομένου ότι η λειτουργία GUI (Γραφική διεπαφή χρήστη) σε διακομιστές Linux δεν είναι συνηθισμένη να εγκατασταθεί.

Το SSH μπορεί να είναι το πιο δημοφιλές πρωτόκολλο που επιτρέπει στους διαχειριστές Linux να διαχειρίζονται τους διακομιστές με απομακρυσμένο ασφαλή τρόπο. Ενσωματωμένη με την εντολή SSH υπάρχει η εντολή SCP, η οποία χρησιμοποιείται για την αντιγραφή αρχείων μεταξύ διακομιστών με ασφαλή τρόπο.

Βασική Σύνταξη Εντολής SCP

Η παρακάτω εντολή θα είναι αντίγραφο "source_file_name" στο "destination_folder" στο "destination_host" χρησιμοποιώντας το "username " λογαριασμός.

scp source_file_name username@destination_host:destination_folder

Υπάρχουν πολλές παράμετροι στην εντολή SCP που μπορείτε να χρησιμοποιήσετε. Ακολουθούν οι παράμετροι που μπορούν να χρησιμοποιηθούν σε καθημερινή βάση.

Ασφαλής μεταφορά αρχείων σε Linux

Η βασική εντολή SCP χωρίς παραμέτρους θα αντιγράψει τα αρχεία στο παρασκήνιο. Οι χρήστες δεν θα δουν τίποτα εκτός εάν ολοκληρωθεί η διαδικασία ή εμφανιστεί κάποιο σφάλμα.

Μπορείτε να χρησιμοποιήσετε την παράμετρο "-v" για να εκτυπώσετε πληροφορίες εντοπισμού σφαλμάτων στην οθόνη. Μπορεί να σας βοηθήσει να διορθώσετε προβλήματα σύνδεσης, ελέγχου ταυτότητας και διαμόρφωσης.

Αντιγραφή αρχείου από τοπικό κεντρικό υπολογιστή σε απομακρυσμένο διακομιστή

Η ακόλουθη εντολή αντιγράφει ένα αρχείο "scp-cheatsheet.pdf" από ένα τοπικό σε ένα απομακρυσμένο σύστημα Linux στον κατάλογο /home/tecmint.

scp -v scp-cheatsheet.pdf [email :/home/tecmint/.

Δείγμα εξόδου:

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
...

Αντιγραφή αρχείου από απομακρυσμένο κεντρικό υπολογιστή σε τοπικό κεντρικό υπολογιστή

Η ακόλουθη εντολή αντιγράφει ένα αρχείο "ssh-cheatsheet.pdf" από έναν απομακρυσμένο κεντρικό υπολογιστή σε ένα τοπικό σύστημα στον κατάλογο /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf /home/tecmint/.

Δείγμα εξόδου:

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
...

Αντιγραφή αρχείου από απομακρυσμένο κεντρικό υπολογιστή σε άλλο κεντρικό υπολογιστή

Η ακόλουθη εντολή αντιγράφει ένα αρχείο "ssh-cheatsheet.pdf" από έναν απομακρυσμένο κεντρικό υπολογιστή σε άλλο σύστημα απομακρυσμένου κεντρικού υπολογιστή στον κατάλογο /home/tecmint.

scp -v [email :/home/ravi/ssh-cheatsheet.pdf [email :/home/anusha/.

Αντιγράψτε αρχεία με την ημερομηνία και την ώρα δημιουργίας του πρωτοτύπου

Η παράμετρος "-p" θα διατηρήσει τους αρχικούς χρόνους τροποποίησης και πρόσβασης των αρχείων κατά την αντιγραφή των αρχείων μαζί με τον εκτιμώμενο χρόνο και την ταχύτητα σύνδεσης θα εμφανιστούν στην οθόνη.

scp -p scp-cheatsheet.pdf [email :/home/tecmint/.

Δείγμα εξόδου:

[email 's password: 
scp-cheatsheet.pdf                                                                                                                                                                 100%  531   721.4KB/s   00:00    

Συμπίεση Scp κατά την αντιγραφή αρχείων

Μία από τις παραμέτρους που μπορούν να επιταχύνουν τη μεταφορά των αρχείων σας είναι η παράμετρος "-C", η οποία χρησιμοποιείται για τη συμπίεση των αρχείων σας εν κινήσει. Το μοναδικό είναι ότι η συμπίεση συμβαίνει μόνο στο δίκτυο. Όταν το αρχείο φτάσει στον διακομιστή προορισμού, θα επιστρέψει στο αρχικό μέγεθος όπως πριν συμβεί η συμπίεση.

Ρίξτε μια ματιά σε αυτές τις εντολές. Χρησιμοποιεί ένα μόνο αρχείο 93 Mb.

scp -pv messages.log [email :.

Δείγμα εξόδου:

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 '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

Η αντιγραφή αρχείων χωρίς την παράμετρο "-C" θα έχει ως αποτέλεσμα 1661,3 δευτερόλεπτα. Μπορείτε να συγκρίνετε το αποτέλεσμα με την παρακάτω εντολή χρησιμοποιώντας την παράμετρο "-C".

scp -Cpv messages.log [email :.

Δείγμα εξόδου:

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 '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

Όπως μπορείτε να δείτε, όταν χρησιμοποιείτε συμπίεση, η διαδικασία μεταφοράς γίνεται σε 162,5 δευτερόλεπτα. Είναι 10 φορές πιο γρήγορα από τη μη χρήση της παραμέτρου "-C". Εάν αντιγράφετε πολλά αρχεία στο δίκτυο, η παράμετρος «-C» θα σας βοηθήσει να μειώσετε τον συνολικό χρόνο που χρειάζεστε.

Αυτό που πρέπει να προσέξουμε είναι ότι η μέθοδος συμπίεσης δεν θα λειτουργήσει σε κανένα αρχείο. Όταν το αρχείο προέλευσης είναι ήδη συμπιεσμένο, δεν θα βρείτε καμία βελτίωση εκεί. Αρχεία όπως .zip, .rar, pictures και .iso δεν θα επηρεαστούν από το " παράμετρος -C”.

Αλλάξτε το SCP Cipher σε Κρυπτογράφηση αρχείων

Από προεπιλογή, το SCP χρησιμοποιεί το "AES-128" για την κρυπτογράφηση αρχείων. Εάν θέλετε να αλλάξετε σε άλλον κρυπτογράφηση για να τον κρυπτογραφήσετε, μπορείτε να χρησιμοποιήσετε την παράμετρο "-c".

Ρίξτε μια ματιά σε αυτήν την εντολή.

scp -c 3des Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Η παραπάνω εντολή λέει στο SCP να χρησιμοποιήσει τον αλγόριθμο 3des για να κρυπτογραφήσει το αρχείο. Προσέξτε ότι αυτή η παράμετρος χρησιμοποιεί "-c" όχι "-C".

Περιορισμός χρήσης εύρους ζώνης με εντολή SCP

Μια άλλη παράμετρος που μπορεί να είναι χρήσιμη είναι η παράμετρος “-l”. Η παράμετρος "-l" θα περιορίσει το εύρος ζώνης που θα χρησιμοποιηθεί. Θα είναι χρήσιμο εάν κάνετε ένα σενάριο αυτοματισμού για να αντιγράψετε πολλά αρχεία, αλλά δεν θέλετε να εξαντληθεί το εύρος ζώνης από τη διαδικασία SCP.

scp -l 400 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 50.3KB/s 01:13

Η τιμή 400 πίσω από την παράμετρο "-l" σημαίνει ότι περιορίζουμε το εύρος ζώνης για τη διαδικασία SCP μόνο σε 50 KB/ sec.

Ένα πράγμα που πρέπει να θυμάστε είναι ότι το εύρος ζώνης καθορίζεται σε Kilobits/sec (kbps). Σημαίνει ότι 8 bit ισούνται με 1 byte.

Ενώ το SCP μετράει σε Kilobyte/sec (KB/s). Επομένως, εάν θέλετε να περιορίσετε το εύρος ζώνης σας σε SCP μέγιστο μόνο 50 KB/s, πρέπει να το ορίσετε σε 50 x 8=400.

SCP με διαφορετική θύρα

Συνήθως, το SCP χρησιμοποιεί τη θύρα 22 ως προεπιλεγμένη θύρα, αλλά για λόγους ασφαλείας, μπορείτε να αλλάξετε τη θύρα σε άλλη θύρα. Για παράδειγμα, χρησιμοποιούμε τη θύρα 2249.

Τότε η εντολή θα πρέπει να είναι έτσι.

scp -P 2249 Label.pdf [email :.

[email 's password:
Label.pdf 100% 3672KB 262.3KB/s 00:14

Βεβαιωθείτε ότι χρησιμοποιεί κεφαλαίο "P" και όχι "p", καθώς το "p" χρησιμοποιείται ήδη για διατηρημένους χρόνους και λειτουργίες.

SCP – Αντιγραφή αρχείων και καταλόγων αναδρομικά

Μερικές φορές χρειάζεται να αντιγράψουμε τον κατάλογο και όλα τα αρχεία/καταλόγους μέσα σε αυτόν. Θα ήταν καλύτερα αν μπορούμε να το κάνουμε με μία μόνο εντολή χρησιμοποιώντας την παράμετρο «-r», η οποία αντιγράφει ολόκληρο τον κατάλογο αναδρομικά.

scp -r documents [email :.

[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13
scp.txt 100% 10KB 9.8KB/s 00:00

Όταν ολοκληρωθεί η διαδικασία αντιγραφής, στον διακομιστή προορισμού θα βρείτε έναν κατάλογο με το όνομα "documents " με όλα τα αρχεία του. Ο φάκελος "έγγραφα " δημιουργείται αυτόματα.

SCP – Απενεργοποίηση μηνυμάτων προόδου

Εάν επιλέξετε να μην βλέπετε τον μετρητή προόδου και τα προειδοποιητικά/διαγνωστικά μηνύματα από το SCP, μπορείτε να τον απενεργοποιήσετε χρησιμοποιώντας την παράμετρο «-q». Εδώ είναι ένα παράδειγμα.

scp -q Label.pdf [email :.

[email 's password:
pungki@mint ~/Documents $

Όπως μπορείτε να δείτε, αφού εισαγάγετε τον κωδικό πρόσβασης, δεν υπάρχουν πληροφορίες σχετικά με τη διαδικασία SCP. Αφού ολοκληρωθεί η διαδικασία, θα δείτε ξανά ένα μήνυμα.

SCP – Αντιγραφή αρχείων με χρήση διακομιστή μεσολάβησης

Ο διακομιστής μεσολάβησης χρησιμοποιείται συνήθως στο περιβάλλον γραφείου. Εγγενώς, το SCP δεν είναι διαμορφωμένος διακομιστής μεσολάβησης. Όταν το περιβάλλον σας χρησιμοποιεί διακομιστή μεσολάβησης, πρέπει να "πείτε " στο SCP για να επικοινωνήσει με τον διακομιστή μεσολάβησης.

Εδώ είναι το σενάριο. Η διεύθυνση διακομιστή μεσολάβησης είναι 10.0.96.6 και η θύρα διακομιστή μεσολάβησης είναι 8080. Ο διακομιστής μεσολάβησης εφάρμοσε επίσης έλεγχο ταυτότητας χρήστη. Αρχικά, πρέπει να δημιουργήσετε το αρχείο "~/.ssh/config". Δεύτερον, βάζετε αυτήν την εντολή μέσα σε αυτό.

ProxyCommand /usr/bin/corkscrew 10.0.96.6 8080 %h %p ~/.ssh/proxyauth

Στη συνέχεια, πρέπει να δημιουργήσετε το αρχείο "~/.ssh/proxyauth" που περιέχει.

myusername:mypassword

Μετά από αυτό, μπορείτε να κάνετε SCP με διαφάνεια ως συνήθως.

Παρακαλούμε σημειώστε ότι το ανοιχτήρι ενδέχεται να μην έχει εγκατασταθεί ακόμη στο σύστημά σας. Στο Linux Mint μου, πρέπει πρώτα να το εγκαταστήσω, χρησιμοποιώντας την τυπική διαδικασία εγκατάστασης του Linux Mint.

apt-get install corkscrew

Για άλλα συστήματα που βασίζονται σε yum, οι χρήστες μπορούν να εγκαταστήσουν τιρμπουσόν χρησιμοποιώντας την ακόλουθη εντολή yum.

yum install corkscrew

Ένα άλλο πράγμα είναι ότι αφού το αρχείο "~/.ssh/proxyauth" περιέχει το "όνομα χρήστη" και τον "κωδικό πρόσβασης" σε μορφή καθαρού κειμένου , βεβαιωθείτε ότι το αρχείο είναι προσβάσιμο μόνο από εσάς.

Επιλέξτε ένα διαφορετικό αρχείο ssh_config

Για τους χρήστες κινητών που συχνά αλλάζουν μεταξύ των εταιρικών δικτύων και των δημόσιων δικτύων, θα είναι δύσκολο να αλλάζουν πάντα ρυθμίσεις στο SCP. Είναι καλύτερα αν μπορούμε να βάλουμε ένα διαφορετικό αρχείο ssh_config που να ταιριάζει στις ανάγκες μας.

Ο διακομιστής μεσολάβησης χρησιμοποιείται στο εταιρικό δίκτυο αλλά όχι στο δημόσιο δίκτυο και αλλάζετε τακτικά δίκτυα.

scp -F /home/pungki/proxy_ssh_config Label.pdf

[email :.
[email 's password:
Label.pdf 100% 3672KB 282.5KB/s 00:13

Από προεπιλογή το αρχείο "ssh_config" ανά χρήστη θα τοποθετηθεί στο "~/.ssh/config". Η δημιουργία ενός συγκεκριμένου αρχείου "ssh_config" με συμβατότητα διακομιστή μεσολάβησης θα διευκολύνει την εναλλαγή μεταξύ δικτύων.

Όταν βρίσκεστε στο δίκτυο της εταιρείας, μπορείτε να χρησιμοποιήσετε την παράμετρο "-F". Όταν βρίσκεστε σε δημόσιο δίκτυο, μπορείτε να παραλείψετε την παράμετρο "-F".

Αυτά είναι όλα σχετικά με το SCP. Μπορείτε να δείτε σελίδες ανθρώπου του SCP για περισσότερες λεπτομέρειες. Μη διστάσετε να αφήσετε σχόλια και προτάσεις.