Εργασία ως απομακρυσμένο ελεύθερο επαγγελματία έχει πολλά οφέλη, αλλά η δημιουργία ενός αποτελεσματικού κατανεμημένου εργασιακού περιβάλλοντος μπορεί να είναι μια πραγματική πρόκληση. Φυσικά, υπάρχουν πολλές προσεγγίσεις που μπορεί κανείς να ακολουθήσει και κανένας «καλύτερος» τρόπος δεν θα ταιριάζει σε όλους. Η απομακρυσμένη ψηφιακή οργάνωση στο χώρο εργασίας είναι πράγματι ένα πολύ προσωπικό πράγμα και αυτό που λειτουργεί καλά για έναν προγραμματιστή μπορεί να μην λειτουργεί καθόλου καλά για κάποιον άλλο.
Έχοντας αυτό κατά νου, η εγκατάσταση που παρουσιάζω εδώ είναι απλώς αυτό που λειτουργεί καλά για μένα προσωπικά, ειδικά σε απομακρυσμένα έργα που περιλαμβάνουν ανάπτυξη και διαχείριση συστήματος. Πιστεύω ότι αυτή η προσέγγιση έχει ορισμένα πλεονεκτήματα, αλλά κάθε αναγνώστης πρέπει να σκεφτεί πώς να το προσαρμόσει με τρόπο που να ταιριάζει καλύτερα σε αυτούς, βάσει ενός συνδυασμού των επιχειρησιακών αναγκών και των προσωπικών προτιμήσεών τους.
Η προσέγγισή μου βασίζεται σε μεγάλο βαθμό στις δυνατότητες που προσφέρει το SSH και σε σχετικά εργαλεία στο Linux. Σημειώστε ότι οι χρήστες MacOS και άλλων συστημάτων που μοιάζουν με Unix μπορούν να επωφεληθούν από τις περιγραφόμενες διαδικασίες επίσης, στο βαθμό που τα συστήματά τους υποστηρίζουν τα περιγραφόμενα εργαλεία.
Ένα σημαντικό πρώτο βήμα στη ρύθμιση μου είναι ένα Raspberry Pi 2 -τροφοδοτείται διακομιστής στο σπίτι μου , χρησιμοποιείται για να φιλοξενήσει τα πάντα, από τα αποθετήρια πηγαίου κώδικα μου σε ιστότοπους επίδειξης.
Παρόλο που ταξιδεύω, το διαμέρισμά μου λειτουργεί ως απομακρυσμένη «σταθερή βάση λειτουργιών» με αξιοπρεπή σύνδεση στο Διαδίκτυο (100 Mbit / sec) και σχεδόν χωρίς επιπλέον καθυστέρηση. Αυτό σημαίνει ότι, από το διαμέρισμά μου, βασικά περιορίζομαι μόνο από την ταχύτητα του δικτύου προορισμού. Η ρύθμιση που περιγράφω λειτουργεί καλύτερα με αυτόν τον τύπο συνδεσιμότητας, αν και δεν είναι απαίτηση. Στην πραγματικότητα, έχω χρησιμοποιήσει επίσης αυτήν την προσέγγιση ενώ είχα μια σύνδεση ADSL σχετικά χαμηλού εύρους ζώνης, με τα περισσότερα πράγματα να λειτουργούν καλά. Η μόνη πραγματική απαίτηση, κατά την εμπειρία μου, είναι ότι το εύρος ζώνης είτε δεν είναι μετρημένο είτε φθηνό.
Ως οικιακός χρήστης, έχω τον φθηνότερο δρομολογητή οικιακού δικτύου που θα μπορούσε να αγοράσει ο πάροχός μου, ο οποίος απλώς δεν είναι αρκετός για αυτό που πρέπει να κάνω. Επομένως, ζήτησα από τον ISP να θέσει το δρομολογητή σε 'λειτουργία γέφυρας', όπου χρησιμεύει μόνο ως τερματιστής σύνδεσης, προσφέροντας PPPoE τελικό σημείο για ακριβώς ένα συνδεδεμένο σύστημα. Αυτό σημαίνει ότι η συσκευή σταματά να λειτουργεί ως σημείο πρόσβασης WiFi ή ακόμη και ως κοινός οικιακός δρομολογητής. Όλες αυτές οι εργασίες διεκπεραιώνονται από ένα επαγγελματικός μικρός δρομολογητής Mikrotik RB951G-2HnD . Εκτελεί το ΝΥΧΤΑ υπηρεσία για το τοπικό μου δίκτυο (το οποίο έχω αριθμήσει 10.10.10.0/24) και προσφορές DHCP σε ενσύρματες και ασύρματες συσκευές που είναι συνδεδεμένες σε αυτό. Το Mikrotik και το Raspberry Pi έχουν στατικές διευθύνσεις επειδή χρησιμοποιούνται σε περιβάλλοντα όπου απαιτείται μια γνωστή διεύθυνση. Στην περίπτωσή μου, αυτές είναι 10.10.10.1 και 10.10.10.10, αντίστοιχα.
Η οικιακή μου σύνδεση δεν διαθέτει στατική διεύθυνση IP. Για τους σκοπούς μου, αυτό είναι μόνο μια ήπια ταλαιπωρία που λειτουργεί εξ αποστάσεως, καθώς ο στόχος είναι να δημιουργήσετε ένα προσωπικό ή SOHO εργασιακό περιβάλλον, όχι ιστότοπος 24/7. (Για όσους απαιτούν μια στατική διεύθυνση IP για τον διακομιστή τους, αξίζει να σημειωθεί ότι το κόστος των στατικών διευθύνσεων IP συνέχισε να μειώνεται και αρκετά φθηνές επιλογές στατικών IP IP είναι διαθέσιμος.) Ο μεσίτης DNS που χρησιμοποιώ, Joker.com , προσφέρει μια δωρεάν υπηρεσία δυναμικού DNS μαζί με όλες τις άλλες υπηρεσίες της, οπότε ένας υποτομέας του προσωπικού μου τομέα υπάρχει ως δυναμικό όνομα. Χρησιμοποιώ αυτό το όνομα για σύνδεση από το εξωτερικό στο δικό μου δίκτυο και το Mikrotik έχει ρυθμιστεί να περνά SSH και HTTP μέσω του NAT στο Raspberry Pi. Πρέπει απλώς να πληκτρολογήσω το ισοδύναμο του ssh mydomain.example.com
για να συνδεθείτε στον προσωπικό μου οικιακό διακομιστή.
Ένα σημαντικό πράγμα που κάνει το Raspberry Pi δεν η προσφορά είναι απόλυση. Το έχω εφοδιάσει με μια κάρτα 32 GB και αυτό πρέπει να χάσω πολλά δεδομένα σε περίπτωση που συμβεί κάτι. Για να το ξεπεράσω αυτό, και για να διασφαλίσω την πρόσβαση στα δεδομένα μου εάν ο λόγος για αστική πρόσβαση στο Διαδίκτυο, αντικατοπτρίζω όλα τα δεδομένα μου σε έναν εξωτερικό διακομιστή που μοιάζει με σύννεφο. Από τότε που είμαι στην Ευρώπη, ήταν λογικό να έχω το μικρότερο αποκλειστικός διακομιστής bare-metal (δηλαδή μη προσαρμοσμένος) από το Online.net , η οποία συνοδεύεται από CPU χαμηλής τεχνολογίας VIA, που προσφέρει 2 GB RAM και 500 GB SSHD . Όπως και με τον μίνι διακομιστή Raspberry Pi, δεν χρειάζομαι υψηλή απόδοση CPU ή ακόμα και μνήμη, οπότε αυτό είναι ένα τέλειο ταίριασμα. (Πέρα από αυτό, θυμάμαι τον πρώτο μου «μεγάλο» διακομιστή που είχε δύο επεξεργαστές Pentium 3 και 1 GB μνήμης RAM, και πιθανότατα ήταν η μισή ταχύτητα του Raspberry Pi 2, και πώς κάναμε υπέροχα πράγματα με αυτό, που επηρέασε το ενδιαφέρον για βελτιστοποίηση.)
Δημιουργώ αντίγραφα ασφαλείας του Raspberry Pi στον απομακρυσμένο διακομιστή που μοιάζει με σύννεφο χρησιμοποιώντας rdiff-αντίγραφο ασφαλείας . Κρίνοντας από τα σχετικά μεγέθη των συστημάτων, αυτά τα αντίγραφα ασφαλείας θα μου κάνουν σχεδόν απεριόριστο ιστορικό. Ένα άλλο πράγμα που έχω στον διακομιστή που μοιάζει με σύννεφο είναι η εγκατάσταση του το δικό σας Cloud , που μου επιτρέπει να τρέχω μια ιδιωτική υπηρεσία τύπου Dropbox. Το ownCloud ως προϊόν κινείται προς το groupware και τη συνεργασία, οπότε γίνεται ακόμη πιο χρήσιμο εάν το χρησιμοποιούν περισσότερα άτομα. Από τότε που άρχισα να το χρησιμοποιώ, κυριολεκτικά δεν το έχω όποιος τοπικά δεδομένα που δεν δημιουργούνται αντίγραφα ασφαλείας ούτε στο Raspberry Pi ή στον διακομιστή που μοιάζει με σύννεφο και τα περισσότερα από αυτά δημιουργούνται αντίγραφα ασφαλείας δύο φορές. Οποιαδήποτε επιπλέον εφεδρική απόλυση μπορείτε να κάνετε είναι πάντα καλό, εάν εκτιμάτε τα δεδομένα σας.
Το μεγαλύτερο μέρος της δουλειάς μου αυτές τις μέρες περιλαμβάνει την ανάπτυξη υλικού που δεν σχετίζεται άμεσα με τον ιστό (σοκαριστικό, ξέρω!), Οπότε η ροή εργασίας μου ακολουθεί συχνά έναν κλασικό κύκλο επεξεργασίας-μεταγλώττισης. Ανάλογα με τις συγκεκριμένες συνθήκες ενός έργου, μπορεί να έχω είτε τα αρχεία του τοπικά στον φορητό υπολογιστή μου, μπορώ να τα βάλω στον δικό σας κατάλογο συγχρονισμένο με το iCloud, ή, πιο ενδιαφέρον, θα μπορούσα να τα τοποθετήσω απευθείας στο Raspberry Pi και να τα χρησιμοποιήσω από εκεί .
Η τελευταία επιλογή είναι δυνατή χάρη στο SSHFS , που μου επιτρέπει να προσαρτώ τοπικά έναν απομακρυσμένο κατάλογο από το Raspberry Pi. Αυτό είναι σχεδόν σαν ένα μικρό κομμάτι μαγείας: μπορείτε να έχετε έναν απομακρυσμένο κατάλογο όποιος διακομιστή στον οποίο έχετε πρόσβαση SSH (λειτουργεί βάσει των δικαιωμάτων που έχει ο χρήστης στον διακομιστή) ως τοπικού καταλόγου.
Έχετε έναν απομακρυσμένο κατάλογο έργου; Τοποθετήστε το τοπικά και πηγαίνετε για αυτό. Εάν χρειάζεστε έναν ισχυρό διακομιστή για ανάπτυξη ή δοκιμή και - για κάποιο λόγο απλά πηγαίνετε εκεί και χρησιμοποιείτε ήρθα στην κονσόλα δεν είναι μια επιλογή - τοποθετήστε αυτόν τον διακομιστή τοπικά και κάντε ό, τι θέλετε. Αυτό λειτουργεί ιδιαίτερα καλά όταν βρίσκομαι σε σύνδεση χαμηλού εύρους ζώνης στο Διαδίκτυο: ακόμα κι αν δουλεύω σε πρόγραμμα επεξεργασίας κειμένου κονσόλας, η εμπειρία είναι πολύ καλύτερη αν τρέχω αυτόν τον επεξεργαστή τοπικά και μετά μεταφέρω τα αρχεία μέσω SSHFS, μάλλον από το να δουλεύεις σε μια απομακρυσμένη περίοδο λειτουργίας SSH.
Πρέπει να συγκρίνετε πολλά /etc
καταλόγους σε διαφορετικούς απομακρυσμένους διακομιστές; Κανένα πρόβλημα. Απλώς χρησιμοποιήστε το SSHFS για να τοποθετήσετε κάθε ένα από αυτά τοπικά και, στη συνέχεια, χρησιμοποιήστε το diff (ή οποιοδήποτε άλλο εργαλείο ισχύει) για να τα συγκρίνετε.
Ή ίσως πρέπει να επεξεργαστείτε μεγάλα αρχεία καταγραφής, αλλά δεν θέλετε να εγκαταστήσετε το εργαλείο ανάλυσης αρχείων καταγραφής στον διακομιστή (επειδή έχει εξαρτήσεις gazillion) και για οποιονδήποτε λόγο η αντιγραφή των αρχείων καταγραφής είναι άβολη. Για άλλη μια φορά, δεν είναι πρόβλημα. Απλώς τοποθετήστε τον κατάλογο απομακρυσμένων αρχείων καταγραφής τοπικά μέσω SSHFS και εκτελέστε ό, τι εργαλείο χρειάζεστε - ακόμη και αν είναι τεράστιο, βαρύ και βασισμένο στο GUI. Το SSH υποστηρίζει on-the-fly συμπίεση και το SSHFS το χρησιμοποιεί, οπότε η εργασία με αρχεία κειμένου είναι αρκετά φιλική προς το εύρος ζώνης.
Για τους σκοπούς μου, χρησιμοποιώ τις ακόλουθες επιλογές στο sshfs
γραμμή εντολών:
sshfs -o reconnect -o idmap=user -o follow_symlinks -C server.example.com:. server
Δείτε τι κάνουν αυτές οι επιλογές γραμμής εντολών:
-o reconnect
- Λέει στα sshfs να επανασυνδέσουν το τελικό σημείο SSH εάν σπάσει. Αυτό είναι πολύ σημαντικό αφού από προεπιλογή, όταν διακοπεί η σύνδεση, το σημείο προσάρτησης είτε θα αποτύχει απότομα είτε απλώς θα κολλήσει (το οποίο βρήκα πιο συνηθισμένο). Μου φαίνεται πραγματικά ότι πρέπει να είναι η προεπιλεγμένη επιλογή.-o idmap=user
- Λέει στα sshfs να χαρτογραφήσουν τον απομακρυσμένο χρήστη (δηλαδή, τον χρήστη με τον οποίο συνδέουμε) να είναι ο ίδιος με τον τοπικό χρήστη. Δεδομένου ότι θα μπορούσατε να συνδεθείτε μέσω SSH με ένα αυθαίρετο όνομα χρήστη, αυτό 'διορθώνει' τα πράγματα, έτσι ώστε το τοπικό σύστημα πιστεύει ότι ο χρήστης είναι ο ίδιος. Τα δικαιώματα πρόσβασης και οι άδειες στο απομακρυσμένο σύστημα ισχύουν ως συνήθως για τον απομακρυσμένο χρήστη.-o follow_symlinks
- Ενώ μπορείτε να έχετε έναν αυθαίρετο αριθμό εγκατεστημένων απομακρυσμένων συστημάτων αρχείων, το βρίσκω πιο βολικό να τοποθετώ μόνο έναν απομακρυσμένο κατάλογο, τον αρχικό μου κατάλογο και σε αυτόν (στην απομακρυσμένη περίοδο λειτουργίας SSH) μπορώ να δημιουργήσω συνδέσμους σε σημαντικούς καταλόγους αλλού στο απομακρυσμένο σύστημα, όπως /srv
ή /etc
ή /var/log
. Αυτή η επιλογή κάνει τα sshfs να επιλύουν απομακρυσμένα symlinks σε αρχεία και καταλόγους, επιτρέποντάς σας να ακολουθήσετε τους συνδεδεμένους καταλόγους.-C
- Ενεργοποιεί τη συμπίεση SSH. Αυτό είναι ιδιαίτερα αποτελεσματικό με τα μεταδεδομένα αρχείων και τα αρχεία κειμένου, οπότε είναι ένα άλλο πράγμα που φαίνεται ότι πρέπει να είναι μια προεπιλεγμένη επιλογή.server.example.com:.
- Αυτό είναι το απομακρυσμένο τελικό σημείο. Το πρώτο μέρος (server.example.com
σε αυτό το παράδειγμα) είναι το όνομα κεντρικού υπολογιστή και το δεύτερο μέρος (μετά την άνω και κάτω τελεία) είναι ο απομακρυσμένος κατάλογος που θα τοποθετηθεί. Σε αυτήν την περίπτωση, έχω προσθέσει '.' για να υποδείξω τον προεπιλεγμένο κατάλογο όπου ο χρήστης μου καταλήγει μετά τη σύνδεση SSH, που είναι ο αρχικός μου κατάλογος.server
- Ο τοπικός κατάλογος στον οποίο θα τοποθετηθεί το απομακρυσμένο σύστημα αρχείων.Ειδικά αν είστε σε χαμηλό εύρος ζώνης ή σε ασταθή σύνδεση στο Διαδίκτυο, πρέπει να χρησιμοποιήσετε το SSHFS με Έλεγχος ταυτότητας δημόσιου / ιδιωτικού κλειδιού SSH και έναν τοπικό αντιπρόσωπο SSH. Με αυτόν τον τρόπο, δεν θα σας ζητηθεί κωδικός πρόσβασης (κωδικοί πρόσβασης συστήματος ή κωδικοί πρόσβασης κλειδιού SSH) όταν χρησιμοποιείτε SSHFS και η δυνατότητα επανασύνδεσης θα λειτουργεί όπως διαφημίζεται. Λάβετε υπόψη ότι εάν δεν έχετε ρυθμίσει τον παράγοντα SSH έτσι ώστε να παρέχει το ξεκλειδωμένο κλειδί όπως απαιτείται κατά τη συνεδρία σας, η λειτουργία επανασύνδεσης συνήθως θα αποτύχει. Ο ιστός είναι γεμάτος από βασικούς οδηγούς SSH και τα περισσότερα περιβάλλοντα γραφείου που βασίζονται στο GTK έχω δοκιμάσει να ξεκινήσουν αυτόματα τον δικό τους πράκτορα (ή 'πορτοφόλι' ή οτιδήποτε επιλέγουν να το καλέσουν) αυτόματα.
Έχοντας ένα σταθερό σημείο στο Διαδίκτυο το οποίο είναι απομακρυσμένα προσβάσιμο από οπουδήποτε στον κόσμο και το οποίο βρίσκεται σε σύνδεση υψηλού εύρους ζώνης - για μένα είναι το σύστημα Raspberry Pi μου και θα μπορούσε πραγματικά να είναι οποιοδήποτε γενικό VPS - μειώνει το άγχος και σας επιτρέπει να κάνετε όλων των ειδών τα πράγματα με την ανταλλαγή και τη διοχέτευση δεδομένων.
Χρειάζεστε ένα γρήγορο χάρτης και είστε συνδεδεμένοι μέσω δικτύου κινητής τηλεφωνίας; Απλώς κάντε το από αυτόν τον διακομιστή. Πρέπει να αντιγράψετε γρήγορα ορισμένα δεδομένα και το SSHFS είναι υπερβολικό; Απλά χρησιμοποιήστε απλό SCP .
Μια άλλη κατάσταση που μπορεί να βρεθείτε αντιμέτωποι με εμάς όπου έχετε πρόσβαση SSH σε έναν διακομιστή, αλλά η θύρα 80 (ή οποιαδήποτε άλλη) είναι τείχος προστασίας έξω από το εξωτερικό δίκτυο από το οποίο συνδέεστε. Για να το ξεπεράσετε αυτό, μπορείτε να χρησιμοποιήσετε το SSH για να προωθήσετε αυτήν τη θύρα στο τοπικό μηχάνημά σας και, στη συνέχεια, να αποκτήσετε πρόσβαση σε αυτό μέσω localhost
. Μια ακόμη πιο ενδιαφέρουσα προσέγγιση είναι να χρησιμοποιήσετε τον κεντρικό υπολογιστή στον οποίο είστε συνδεδεμένοι μέσω SSH για να προωθήσετε μια θύρα αλλο μηχανή, πιθανώς πίσω από το ίδιο τείχος προστασίας. Εάν, για παράδειγμα, έχετε τους ακόλουθους κεντρικούς υπολογιστές:
Μια εντολή για την προώθηση της θύρας 80 στο 192.168.77.15 στο localhost: 8080 μέσω του διακομιστή foo.example.com SSH θα ήταν:
ssh -L 8080:192.168.77.15:80 -C foo.example.com
Το επιχείρημα για -L
καθορίζει την τοπική θύρα και τη διεύθυνση προορισμού και τη θύρα. Το -C
Το όρισμα επιτρέπει τη συμπίεση, ώστε να μπορείτε ξανά να επιτύχετε εξοικονόμηση εύρους ζώνης και τέλος στο τέλος απλά πληκτρολογείτε το όνομα κεντρικού υπολογιστή SSH. Αυτή η εντολή θα ανοίξει μια απλή περίοδο λειτουργίας κελύφους SSH στον κεντρικό υπολογιστή και, επιπλέον, ακούστε τη θύρα localhost 8080, στην οποία μπορείτε να συνδεθείτε.
Ένα από τα πιο εντυπωσιακά κόλπα που έχει αναπτύξει η SSH τα τελευταία χρόνια είναι η ικανότητά του να δημιουργεί πραγματικές σήραγγες VPN. Αυτά εκδηλώνονται ως εικονικές συσκευές δικτύου και στις δύο πλευρές της σύνδεσης (υποθέτοντας ότι έχουν ρυθμιστεί κατάλληλες διευθύνσεις IP) και μπορούν να σας επιτρέψουν την πρόσβαση στο απομακρυσμένο δίκτυο σαν να ήσασταν εκεί φυσικά (παρακάμπτοντας τείχη προστασίας). Για τεχνικούς λόγους και για λόγους ασφαλείας, αυτό απαιτεί πρόσβαση root σε αμφότερα τα μηχανήματα που συνδέονται με τη σήραγγα, οπότε είναι πολύ λιγότερο βολικό από το να χρησιμοποιείτε απλώς προώθηση θυρών ή SSHFS ή SCP. Αυτό είναι για τους προχωρημένους χρήστες εκεί έξω, οι οποίοι μπορούν εύκολα να βρουν μαθήματα για το πώς να το κάνετε.
Απογυμνωμένο από την ανάγκη εργασίας από μία τοποθεσία , μπορείτε να εργαστείτε κυριολεκτικά από οπουδήποτε που διαθέτει μισή αξιοπρεπή συνδεσιμότητα στο Διαδίκτυο χρησιμοποιώντας τις τεχνολογίες και τις τεχνικές που έχω περιγράψει (συμπεριλαμβανομένης της αναμονής του αυτοκινήτου σας στο μηχανικό). Τοποθετήστε ξένα συστήματα πάνω από SSH, μπροστινές θύρες, τρυπάνι με σήραγγες, για να αποκτήσετε πρόσβαση στον ιδιωτικό σας διακομιστή ή σε δεδομένα που βασίζονται σε σύννεφα από απόσταση, ενώ έχετε θέα σε μια παραλία με ηλιοθεραπεία ή πίνοντας έναν φιλικό προς το περιβάλλον καφέ hipster σε μια ομιχλώδη πόλη. Απλά κάνε το!