Οι φίλοι του Linux, του BSD αλλά και πολλοί από τον κόσμο του OS X,
γνωρίζουν καλά τα οφέλη του πρωτοκόλλου SSH. Χάρη μάλιστα στο OpenSSH το
χαίρονται καθημερινά, επιτυγχάνοντας απομακρυσμένες, ασφαλείς συνδέσεις
στους υπολογιστές τους. Οι χρήστες των Windows μπορούν κι εκείνοι να
καρπώνονται τα οφέλη του SSH. Σε αυτό το άρθρο δείχνουμε πώς ακριβώς.
Θα ξεκινήσουμε με μια πολύ σύντομη εισαγωγή στο πρωτόκολλο SSH και
στα όσα προσφέρει, ακολούθως θα δείξουμε πώς εγκαθιστούμε και ρυθμίζουμε
τα Cygwin και OpenSSH στα Windows 7 και, τέλος, θα δώσουμε μερικά
παραδείγματα συνδέσεων ενώ θα εξηγήσουμε και πώς μπορούμε να σερφάρουμε
με ασφάλεια μέσω των λεγόμενων SSH tunnels. Αυτό το τελευταίο μπορείτε
να το σκέφτεστε ως μια απλούστερη εναλλακτική του OpenVPN, με τα
πλεονεκτήματα αλλά και τα μειονεκτήματά της.
Τι είναι τα SSH και OpenSSH
Το Secure Shell ή αλλιώς SSH είναι ένα δικτυακό πρωτόκολλο που ορίζει
έναν τρόπο για ασφαλείς, κρυπτογραφημένες συνδέσεις μεταξύ δύο
μηχανημάτων. Οι κρυπτογραφημένες αυτές συνδέσεις είναι δυνατόν να
επιτυγχάνονται και μέσω ενός επισφαλούς, εν γένει, δικτύου, όπως είναι
το Internet. Το SSH συνήθως χρησιμοποιείται για την απομακρυσμένη, πλήρη
πρόσβαση στη γραμμή εντολών διαφόρων Unix boxes, αλλά όχι μόνο.
Συχνά, π.χ., επιστρατεύεται για ασφαλείς μεταφορές αρχείων, περιήγηση
στο web μέσω των λεγόμενων SSH tunnels κ.ο.κ. Περισσότερα για το SSH
μπορείτε να διαβάσετε στο σχετικό λήμμα της Wikipedia:
Το δε OpenSSH είναι ένα σύνολο προγραμμάτων για την υλοποίηση συνδέσεων SSH. Αναπτύχθηκε αρχικά στους κόλπους του OpenBSD project,
αποτελεί Open Source Software και σήμερα διατίθεται για κάθε γνωστό κι
άγνωστο σύστημα Unix, καθώς και για τα Windows. Το OpenSSH ακολουθεί τη
λογική του μοντέλου client-server, όπως άλλωστε ορίζει το SSH. Σ' αυτό
το άρθρο ασχολούμαστε με την εκδοχή του OpenSSH server για Windows, ενώ
δείχνουμε φυσικά και πώς συνδεόμαστε σ' αυτόν από διάφορα λειτουργικά
συστήματα, χρησιμοποιώντας τον κατάλληλο για την περίσταση client.
Εγκατάσταση Cygwin και OpenSSH
Το OpenSSH λειτουργεί σε Unixοειδή περιβάλλοντα. Ένα τέτοιο περιβάλλον για τα Windows παρέχεται από το Cygwin project. Για την εγκατάστασή του, κατεβάστε το προγραμματάκι setup.exe με κλικ στο
Αποθηκεύστε το σ' ένα βολικό μέρος. Είναι πολύ πιθανό να το
χρειαστείτε κι αργότερα, π.χ., για την εγκατάσταση κάποιου έξτρα
εργαλείου ή βιβλιοθήκης. Τρέξτε το setup.exe κι όταν ερωτηθείτε επιλέξτε εγκατάσταση από το Internet.
Ως ριζικό κατάλογο (root directory) για την εγκατάσταση, αφήστε τον
προεπιλεγμένο. Η εγκατάσταση καλό είναι να γίνει για όλους τους χρήστες
του Windows box.
Υποδείξτε έναν κατάλογο, μέσα στον οποίο το setup.exe θα κατεβάζει τα αρχεία της εγκατάστασης.
Αναφορικά με τη σύνδεσή σας στο Internet, αν χρειάζεται να διαλέξετε
κάτι διαφορετικό από το Direct Connection, μάλλον θα το γνωρίζετε ήδη.
Επιλέξτε ένα κατά το δυνατόν κοντινό mirror, από το οποίο θα κατέβουν τα στοιχεία της εγκατάστασης.
Αν αυτή είναι η πρώτη φορά που εγκαθιστάτε το Cygwin, τότε μπορείτε να αγνοήσετε αυτό το ανησυχητικό, προειδοποιητικό μήνυμα.
Στο στάδιο της επιλογής πακέτων, εστιάστε την προσοχή σας στη θυρίδα
Search, πάνω αριστερά. Πληκτρολογήστε εκεί "openssh", χωρίς τα
εισαγωγικά. Από την κατηγορία πακέτων Net, διαλέξτε την τελευταία
διαθέσιμη έκδοση του OpenSSH και τσεκάρετε το κουτάκι της στήλης Bin,
ώστε να εγκατασταθούν τα αντίστοιχα binaries.
Λόγω του αιτήματος σας για εγκατάσταση του OpenSSH, χρειάζονται και
ορισμένα πρόσθετα πακέτα. Εννοείται ότι θα δεχθείτε την εγκατάστασή
τους.
Η διαδικασία της εγκατάστασης θα ξεκινήσει κι αν όλα πάνε καλά θα
εξελιχθεί ομαλά. Μόνη περίπτωση να στραβώσει κάτι είναι αν προκύψει
κάποιο θέμα με τη δικτυακή σύνδεση προς το mirror. Ακόμη και τότε, έχετε
υπόψη ότι μπορείτε να επαναλάβετε τη διαδικασία τρέχοντας ξανά το
setup.exe.
Μετά την εγκατάσταση, στο start menu των Windows θα υπάρχει μια
καταχώρηση με όνομα Cygwin Terminal. Επιλέγοντάς τη ανοίγει ένα παράθυρο
τερματικού, στο οποίο τρέχει το BASH shell του περιβάλλοντος Cygwin.
Πληκτρολογήστε εντολές όπως:
uname -a |
echo $SHELL |
για να δείτε κι εσείς ότι τα Windows σας φιλοξενούν, πλέον, ένα
πλήρες Unixοειδές περιβάλλον, το οποίο περιλαμβάνει και το δημοφιλέστατο
BASH shell.
Ρύθμιση κι ενεργοποίηση OpenSSH
Ανοίξτε ένα Cygwin Terminal, αλλά με δικαιώματα administrator.Στο τερματικό, πληκτρολογήστε
ssh-host-config |
όπως επίσης και τη δημιουργία ενός νέου, περιορισμένου account με
όνομα sshd, εντός του οποίου θα λειτουργεί ο OpenSSH server. Ακολούθως,
δεχθείτε την εγκατάσταση του server ως υπηρεσία (service) των Windows.
Στην προτροπή "Enter the value of CYGWIN for the daemon", πατήστε απλά
το [Enter]. Στα Windows 7 θα χρειαστεί να φτιάξετε ένα νέο, privileged
account. Το σκριπτάκι ssh-host-config φροντίζει γι' αυτό και προτείνει
το όνομα cyg_server. Φανταζόμαστε ότι δεν έχετε κανέναν λόγο να θέλετε
κάποιο άλλο, οπότε στη σχετική ερώτηση γράψτε "no" (χωρίς τα εισαγωγικά)
και πατήστε απλά το [Enter]. Μετά, στην ερώτηση για το αν επιθυμείτε τη
δημιουργία του νέου account, δώστε "yes", ακολουθούμενο από [Enter]
φυσικά. Μένει να δώσετε κι ένα password για τον λογαριασμό με όνομα
cyg_server. Κάντε το και η διαδικασία ρύθμισης θα ολοκληρωθεί.
Στο επόμενο reboot ο OpenSSH server θα ενεργοποιηθεί αυτόματα. Μπορείτε να τον σηκώσετε τώρα, χωρίς reboot, δίνοντας
:
net start sshd |
Αν όλα έχουν πάει καλά, ο OpenSSH server θα μπει σε λειτουργία και
στο τερματικό του Cygwin θα δείτε τα δύο μηνύματα που φαίνονται στο
ακόλουθο screenshot.
Εξ ορισμού, ο OpenSSH server χρησιμοποιεί το port 22. Πριν κάνετε την
πρώτη σύνδεσή σας οφείλετε να βεβαιωθείτε ότι το port είναι ανοικτό στο
firewall. Στην περίπτωση εκείνου που έχουν τα Windows 7, ανοίξτε το
Control Panel κι ακολουθήστε τη διαδρομή System and Security -->
Windows Firewall --> Advanced settings. Στο παράθυρο με τίτλο Windows
Firewall with Advanced Security κάντε κλικ στο Inbound Rules (αριστερά)
και μετά άλλο ένα στο New Rule... (δεξιά). Ακολουθήστε τα βήματα του
οδηγού που θα εμφανιστεί, προκειμένου να επιτρέψετε τις εισερχόμενες στο
port 22 συνδέσεις TCP.
Τώρα, όπως στην περίπτωσή μας έτσι και στη δική σας φανταζόμαστε ότι το
Windows box βρίσκεται πίσω από κάποιο modem/router. Επομένως, στο
firewall του router πρέπει να προσθέσετε και τον απαραίτητο κανόνα port
forwarding, ώστε αιτήσεις για συνδέσεις TCP στο τάδε port του router να
ανακατευθύνονται στο port 22/TCP του Windows box. Και γράφουμε "τάδε
port του router" κι όχι "port 22 του router", επειδή για λόγους
ασφαλείας είναι καλή ιδέα το port που βλέπει απευθείας το Internet να
είναι κάποιο "άσχετο", πάνω από το 1024 (π.χ., το 2222).
Παραδείγματα συνδέσεων
Οι συνδέσεις SSH από Linux/BSD/OS X προς το Cygwin command shell του
Windows box, γίνονται πανεύκολα: Το μόνο που χρειάζεται είναι το
προγραμματάκι ssh, το οποίο και τρέχουμε από ένα οποιοδήποτε τερματικό.
Για λόγους πληρότητας και μόνο, παραθέτουμε τη γενική του σύνταξη:
ssh -p remote_port remote_user_name@remote_box_ip_or_fqdn |
Όταν το απομακρυσμένο port είναι το προκαθορισμένο (22), τότε η
παράμετρος -p μπορεί να παραλείπεται. Επίσης, όταν το τοπικό user name
είναι ίδιο με το απομακρυσμένο, τότε και το τμήμα "remote_user_name@"
μπορεί να παραλείπεται.
Για συνδέσεις από μηχανήματα Windows, ένα άριστο εργαλείο είναι το (δωρεάν) PuTTY.
Εκτός από πρόσβαση στο command shell του απομακρυσμένου Windows box,
έχουμε τη δυνατότητα να στέλνουμε ή/και να παίρνουμε αρχεία από το
μηχάνημα -- πάντα μέσω SSH. Το scp είναι ένα εργαλείο για Linux/BSD/OS X
που χρησιμοποιείται από τη γραμμή εντολών και είναι κατάλληλο για
τέτοιες μεταφορές. Μπορούμε όμως να χρησιμοποιούμε κι έναν οποιονδήποτε
FTP client για το περιβάλλον γραφικών, αρκεί να υποστηρίζει συνδέσεις
FTP πάνω από SSH (ή αλλιώς συνδέσεις SFTP). Ένα παράδειγμα τέτοιου
client για Windows και OS X, είναι το δωρεάν Cyberduck. Ό,τι πρέπει είναι και το επίσης δωρεάν FileZilla, το οποίο διατίθεται για Windows/Linux/OS X.
Σημειώστε ότι κάθε φορά που συνδεόμαστε (μέσω SSH) στο λογαριασμό του
χρήστη Windows με όνομα username, αυτομάτως προσγειωνόμαστε στον
κατάλογο /home/username. Αυτό είναι το home directory του χρήστη
username για το Cygwin. Τώρα, με την εντολή ls βλέπουμε ότι τα drives
του συστήματος είναι προσαρτημένα κάτω από τον κατάλογο /cygwin. Αν
υποθέσουμε ότι τα Windows είναι εγκατεστημένα στο C drive (το
πιθανότερο), τότε τα αρχεία του χρήστη username για τα Windows θα είναι
κάτω από το /cygdrive/c/Users/username. Καλό είναι να το έχουμε υπόψη
αυτό, ειδικά για τις περιπτώσεις που θέλουμε να μεταφέρουμε αρχεία από ή
προς το Windows box.
OpenSSH vs OpenVPN
Οι απομακρυσμένες συνδέσεις σε υπολογιστή που τρέχει το OpenSSH είναι
απόλυτα ασφαλείς, ενώ μας παρέχουν και κάποια έξτρα, όπως, π.χ.,
ξένοιαστο σερφάρισμα στο web (εκτός κι αν κάποιος σνιφάρει εντός του
τοπικού δικτύου που τρέχει ο OpenSSH server, δηλαδή). Το OpenSSH θα
μπορούσε κάποιος να το δει ως το μικρό αδελφάκι του OpenVPN. Χάρη στο
τελευταίο, έχουμε πλήρη πρόσβαση στο τοπικό δίκτυο του υπολογιστή που
τρέχει τον αντίστοιχο server. Επιπρόσθετα, σερφάρουμε με ασφάλεια στο
web ενώ και οποιαδήποτε άλλη δικτυακή υπηρεσία περνάει μέσω του
ασφαλούς, κρυπτογραφημένου καναλιού μεταξύ client και OpenVPN server.
Όλα αυτά μάλιστα επιτυγχάνονται χωρίς να χρειαζόμαστε κάποιον proxy για
μία ή περισσότερες εφαρμογές, όπως συμβαίνει στην περίπτωση του surfing
μέσω SSH tunnel.
Αν επιχειρούσαμε μια σύγκριση μεταξύ OpenSSH και OpenVPN, εστιάζοντας
τότε στα θετικά καθεμιάς εκ των δύο λύσεων θα μπορούσαμε να αναφέρουμε
τα ακόλουθα:
OpenSSH. Εύκολο και γρήγορο setup, άριστη λύση για
πλήρη πρόσβαση στο απομακρυσμένο box, δυνατότητα επιλεκτικού SSH
tunneling (π.χ., HTTP/HTTPS traffic).
OpenVPN. Πλήρης πρόσβαση στο box αλλά και στο τοπικό
δίκτυο εντός του οποίου βρίσκεται, αναδρομολόγηση όλης ανεξαιρέτως της
δικτυακής κίνησης μέσω VPN tunnel (χωρίς την ανάγκη τοπικών proxies).
Το στήσιμο του OpenVPN απαιτεί περισσότερη δουλειά αλλά και πόρους,
σε σχέση με το OpenSSH.
0 σχόλια:
Δημοσίευση σχολίου
Σημείωση: Μόνο ένα μέλος αυτού του ιστολογίου μπορεί να αναρτήσει σχόλιο.