Μια εντολή scp που δούλευε σε ένα σενάριο για χρόνια μπορεί να αποτύχει σε έναν τρέχοντα πελάτη με σφάλμα διαδρομής που δεν έχει καμία σχέση με το τούνελ. Το VPN μετέφερε τα byte· ο πελάτης ζήτησε από τον διακομιστή ένα όνομα που ο διακομιστής δεν μπορούσε να επιλύσει. Το τρέχον OpenSSH scp μεταφέρει μέσω SFTP από προεπιλογή, και το SFTP δεν κάνει επέκταση τύπου κελύφους όπως έκανε το παλιό πρωτόκολλο. Η παρακολούθηση της εντολής από τον δικό σας λογαριασμό προς τα έξω δείχνει πού ερμηνεύεται πραγματικά η διαδρομή.

Ξεκινήστε από τον λογαριασμό και μετά από τον κατάλογο στον οποίο μπορεί να γράψει

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

Ζητήστε από τον διακομιστή τη δική του όψη: ssh [email protected] pwd και ssh [email protected] ls -ld /srv/archive. Αν η δεύτερη εντολή αναφέρει άρνηση πρόσβασης, το τούνελ είναι εντάξει και η διαδρομή είναι άχρηστη για αυτόν τον λογαριασμό. Διορθώστε την ιδιοκτησία ή επιλέξτε άλλο προορισμό αντί να διευρύνετε τα δικαιώματα ώστε να προχωρήσει η μεταφορά.

Μια περιορισμένη διαμόρφωση SFTP μπορεί να παρουσιάσει ένα chroot ως ρίζα του συστήματος αρχείων. Μέσα σε αυτή την όψη μια απόλυτη διαδρομή είναι απόλυτη εντός του chroot, που δεν είναι η ίδια θέση που βλέπει ο διαχειριστής στον κεντρικό υπολογιστή.

Ονομάστε ρητά και τις δύο πλευρές της άνω κάτω τελείας

Μια μεταφόρτωση πρέπει να δηλώνει το απομακρυσμένο όνομα αρχείου αντί να υποθέτει ότι το τοπικό βασικό όνομα θα είναι αποδεκτό στην άλλη πλευρά.

scp q3-invoice.csv [email protected]:/home/transfer/drop/q3-invoice.csv

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

scp [email protected]:/srv/archive/2026-q3.csv ./2026-q3.csv

Αποφύγετε το ~otheruser σε ένα σενάριο υπό συντήρηση. Η επέκταση του αρχικού καταλόγου άλλου λογαριασμού ήταν χαρακτηριστικό του απομακρυσμένου κελύφους, και ένας διακομιστής SFTP μπορεί να μην υλοποιεί την επέκταση που το μιμείται. Γράψτε την απόλυτη διαδρομή που ο λογαριασμός μπορεί πραγματικά να ανοίξει, και βάλτε τοπικές διαδρομές με κενά σε εισαγωγικά αντί να αντιγράφετε επίπεδα εισαγωγικών γραμμένα για κέλυφος στον διακομιστή.

Μάθετε ποιο πρωτόκολλο χρησιμοποιεί πραγματικά το scp σας

Από το OpenSSH 9.0 ο πελάτης χρησιμοποιεί SFTP από προεπιλογή, και οι διανομές υιοθετούν ή κάνουν backport αυτή τη συμπεριφορά με το δικό τους χρονοδιάγραμμα. Η συμβολοσειρά έκδοσης λέει τι σκοπεύει ο πελάτης, αλλά μια κατασκευή προμηθευτή μπορεί να διαφέρει από το upstream, οπότε ελέγξτε τον πελάτη που εκτελείτε πραγματικά: ssh -V.

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

Το scp -v εκτυπώνει το υποσύστημα που ζητά, και μια γραμμή υποσυστήματος sftp επιβεβαιώνει ότι χρησιμοποιείται η σύγχρονη διαδρομή. Το scp -O επιβάλλει το παλιό πρωτόκολλο όπου υποστηρίζεται και απαιτείται πραγματικά, και φέρνει πίσω τους δικούς του κανόνες εισαγωγικών. Δεν είναι επιλογή VPN, δεν είναι τρόπος να ενεργοποιήσετε κάτι στον διακομιστή και δεν είναι λόγος να χαλαρώσετε τον έλεγχο κλειδιού κεντρικού υπολογιστή.

Δοκιμάστε τη διαδρομή πριν το σενάριο εξαρτηθεί από αυτή

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

Ελέγξτε και την πλευρά του διακομιστή. Το grep -i subsystem /etc/ssh/sshd_config δείχνει αν έχει διαμορφωθεί υποσύστημα SFTP, και το sftp -b /dev/null [email protected] τερματίζει επιτυχώς μόνο όταν αυτό το υποσύστημα απαντήσει. Ένας κεντρικός υπολογιστής που δέχεται συνδέσεις SSH αλλά δεν έχει υποσύστημα αποτυγχάνει σε κάθε σύγχρονη μεταφορά, ενώ φαίνεται απόλυτα υγιής σε δοκιμή σύνδεσης.

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

Σχετικά άρθρα