Μετάβαση στο περιεχόμενο

Ρυθμίσεις cookies

Επιλέξτε ανά κατηγορία ποια cookies επιτρέπετε. Μπορείτε να αλλάξετε την επιλογή σας οποιαδήποτε στιγμή μέσω των Ρυθμίσεων cookies στο κάτω μέρος κάθε σελίδας. Δήλωση απορρήτου

Απαραίτητα

Πάντα ενεργά

Χρειάζονται για τη σύνδεση, για να διατηρείται το καλάθι σας και για να θυμόμαστε τις επιλογές σας. Είναι πάντα ενεργά.

Ποια cookies;
  • weboke_sessie, weboke_klant, weboke_remember: η συνεδρία σας και η παραμονή σε σύνδεση
  • weboke_basket: το καλάθι σας
  • wkBtwIncl: εμφάνιση τιμών με ή χωρίς ΦΠΑ
  • wok_cookies: η επιλογή σας για τα cookies, 12 μήνες

Μετρούν ποια διαφήμιση οδηγεί σε επίσκεψη ή παραγγελία, ώστε να μην πληρώνουμε για διαφημίσεις που δεν αποδίδουν.

Ποια cookies;
  • Google Ads μέσω Google Tag Manager (_gcl_au, _gcl_aw), έως 90 ημέρες
  • OpenAI Ads, διαφημίσεις στο ChatGPT
  • wok_aff: μέσω ποιου συνεργάτη ήρθατε σε εμάς (πρόγραμμα συνεργατών), 60 ημέρες

4,6

Χώρα και γλώσσα

Κάθε χώρα έχει τη δική της ιστοσελίδα, με τιμές και ΦΠΑ της χώρας αυτής.

Προβολή

Η πρώτη σύνδεση SSH

Ενότητα 1: Ο πρώτος σας server · Χρόνος ανάγνωσης: 10 λεπτά

Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να συνδεθείτε για πρώτη φορά με SSH στον server σας, να ελέγξετε το αποτύπωμα (fingerprint) του server πριν τον εμπιστευτείτε και να ξέρετε τι κάνετε όταν εμφανίζεται η προειδοποίηση ότι η ταυτότητα του server έχει αλλάξει.

Βασικές έννοιες: SSH, client και server, θύρα 22, banner έκδοσης, host key, αποτύπωμα (SHA256), known_hosts, trust on first use, "REMOTE HOST IDENTIFICATION HAS CHANGED", PowerShell και Terminal

Τι είναι το SSH

Το SSH (Secure Shell) είναι η κρυπτογραφημένη σύνδεση με την οποία διαχειρίζεστε έναν server από απόσταση. Πληκτρολογείτε στον δικό σας υπολογιστή και οι εντολές εκτελούνται στον server. Ό,τι περνά από τη γραμμή, ακόμη και ο κωδικός πρόσβασής σας, είναι κρυπτογραφημένο.

Υπάρχουν δύο πλευρές:

  • ο SSH client στον δικό σας υπολογιστή: το πρόγραμμα ssh. Στο macOS και στο Linux περιλαμβάνεται από προεπιλογή. Στα Windows 10 (από την έκδοση 1809) και στα Windows 11 ο OpenSSH client είναι μέρος των Windows· τον χρησιμοποιείτε στο PowerShell ή στο Windows Terminal. Αν λείπει, τον προσθέτετε από τις Ρυθμίσεις, Προαιρετικές δυνατότητες, "Πρόγραμμα-πελάτης OpenSSH". Προγράμματα με παράθυρα όπως το PuTTY λειτουργούν επίσης, αλλά σε αυτή τη σειρά μαθημάτων χρησιμοποιούμε το ssh.
  • ο SSH server στο VPS: το πρόγραμμα sshd (του OpenSSH). Από προεπιλογή ακούει στη θύρα 22.

Σύνδεση

Συνδέεστε με ένα όνομα χρήστη και τη διεύθυνση του server:

PS C:\Users\anna> ssh root@192.0.2.10

Ή με ένα όνομα, αν το έχετε καταχωρίσει στο DNS (μάθημα 7.1):

anna@laptop:~$ ssh root@web1.example.com

Την πρώτη φορά βλέπετε κάτι σαν αυτό:

The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established.
ED25519 key fingerprint is SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

Αυτή είναι η πιο σημαντική στιγμή του μαθήματος. Μην πληκτρολογήσετε στα τυφλά yes.

Το host key και το αποτύπωμα

Κάθε SSH server έχει ένα ή περισσότερα host keys: ζεύγη κλειδιών με τα οποία ο server αποδεικνύει ποιος είναι. Τα δημόσια μέρη βρίσκονται στον server στο /etc/ssh/, για παράδειγμα /etc/ssh/ssh_host_ed25519_key.pub. Σε κάθε σύνδεση ο server δείχνει ότι διαθέτει το μυστικό μέρος.

Ένα αποτύπωμα (fingerprint) είναι μια σύντομη σύνοψη (ένα hash) ενός τέτοιου δημόσιου κλειδιού. Το OpenSSH εμφανίζει από προεπιλογή τη μορφή SHA256: SHA256: ακολουθούμενο από 43 χαρακτήρες.

Η ερώτηση "Are you sure you want to continue connecting?" σημαίνει: ο υπολογιστής σας δεν γνωρίζει ακόμη αυτόν τον server. Ποιος εγγυάται ότι μιλάτε με το δικό σας VPS και όχι με κάποιον που υποκλέπτει την κίνηση; Κανείς, εκτός αν συγκρίνετε εσείς το αποτύπωμα με μια αξιόπιστη πηγή.

Αυτή η πηγή είναι η κονσόλα του παρόχου σας (μάθημα 1.2). Εκεί δεν επικοινωνείτε με τον server μέσω του δικτύου. Συνδεθείτε στην κονσόλα και ζητήστε το αποτύπωμα:

root@web1:~# ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub
256 SHA256:Xq3aTnPpC0m1o4cJ2kVqY8mWb7rZs5dLfE6hUyN9tKs root@web1 (ED25519)

Αν ταιριάζει ακριβώς με αυτό που δείχνει ο client, πληκτρολογείτε yes. Μπορείτε επίσης να επικολλήσετε το ίδιο το αποτύπωμα αντί για yes· τότε το ssh κάνει τη σύγκριση για εσάς. Αν διαφέρει, σταματήστε και ερευνήστε γιατί (λάθος διεύθυνση IP, επανεγκατάσταση του server ή κάτι σοβαρότερο).

Προσέξτε τον τύπο: ο client αναφέρει τον τύπο (ED25519, ECDSA ή RSA). Συγκρίνετε το αποτύπωμα του ίδιου τύπου. Πολλά images εμφανίζουν τα αποτυπώματα και στην κονσόλα κατά την πρώτη εκκίνηση (cloud-init), ανάμεσα σε γραμμές όπως BEGIN SSH HOST KEY FINGERPRINTS.

known_hosts και trust on first use

Αν πληκτρολογήσετε yes, βλέπετε:

Warning: Permanently added '192.0.2.10' (ED25519) to the list of known hosts.

Ο client αποθηκεύει το κλειδί στο ~/.ssh/known_hosts (στα Windows C:\Users\<naam>\.ssh\known_hosts). Από εδώ και πέρα κάνει αυτόματα τη σύγκριση σε κάθε σύνδεση. Αυτό το μοντέλο ονομάζεται trust on first use (TOFU): την πρώτη φορά πρέπει να κάνετε τον έλεγχο εσείς, μετά τον αναλαμβάνει ο client.

Γι' αυτό ο πρώτος έλεγχος είναι τόσο σημαντικός: αν εμπιστευτείτε λάθος κλειδί, ο client δεν θα σας προειδοποιήσει ποτέ ξανά.

Αν εργάζεστε σε υπολογιστή με Debian ή Ubuntu, τα ονόματα στο known_hosts αποθηκεύονται από προεπιλογή ως hash (HashKnownHosts yes στο /etc/ssh/ssh_config), οπότε δεν βλέπετε εκεί αναγνώσιμες διευθύνσεις IP. Στα Windows και στο macOS είναι αναγνώσιμες. Η αναζήτηση λειτουργεί παντού με:

anna@laptop:~$ ssh-keygen -F 192.0.2.10
# Host 192.0.2.10 found: line 3
|1|kP9...= ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAA...

"REMOTE HOST IDENTIFICATION HAS CHANGED"

Μερικές φορές βλέπετε αυτή την προειδοποίηση:

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
...
Host key verification failed.

Ο server δείχνει διαφορετικό κλειδί από αυτό που γνωρίζει ο client σας. Τότε το ssh αρνείται να συνδεθεί. Υπάρχουν δύο είδη αιτιών:

ΦυσιολογικόΎποπτο
Κάνατε επανεγκατάσταση του VPS (νέα host keys)Δεν αλλάξατε τίποτα και όμως το κλειδί είναι διαφορετικό
Η διεύθυνση IP δόθηκε σε άλλον serverΕίστε συνδεδεμένοι σε ένα άγνωστο δίκτυο wifi
Αντικαταστήσατε συνειδητά τα host keysΤο αποτύπωμα στην κονσόλα διαφέρει από αυτό που βλέπει τώρα ο client

Αν υπάρχει φυσιολογική εξήγηση, ελέγξτε ξανά το αποτύπωμα στην κονσόλα και μόνο μετά διαγράψτε την παλιά γραμμή:

anna@laptop:~$ ssh-keygen -R 192.0.2.10
# Host 192.0.2.10 found: line 3
/home/anna/.ssh/known_hosts updated.

Στην επόμενη σύνδεση εμφανίζεται ξανά η ερώτηση της πρώτης φοράς και κάνετε ξανά τον έλεγχο. Μην ορίσετε ποτέ StrictHostKeyChecking no στις ρυθμίσεις σας για να εξαφανίσετε την προειδοποίηση: έτσι απενεργοποιείτε ακριβώς την προστασία που μετράει.

Το banner έκδοσης

Πριν κρυπτογραφηθεί οτιδήποτε, ο client και ο server στέλνουν ο ένας στον άλλον μια γραμμή κειμένου: το banner έκδοσης. Είναι ορατό σε όλους στο internet. Το βλέπετε με ssh -v:

anna@laptop:~$ ssh -v root@192.0.2.10 2>&1 | grep "remote software"
debug1: Remote protocol version 2.0, remote software version OpenSSH_9.6p1 Ubuntu-3ubuntu13.5

Εδώ ο server λέει ποιο πρωτόκολλο (2.0) και ποιο λογισμικό χρησιμοποιεί. Το Debian και το Ubuntu προσθέτουν την έκδοση του πακέτου. Αυτό δεν είναι μυστικό που πρέπει να κρύψετε: οι επιτιθέμενοι δοκιμάζουν έτσι κι αλλιώς τα πάντα, και προστατεύεστε με ενημερώσεις (ενότητα 4), όχι με διαφορετικό banner. Είναι όμως χρήσιμο: από το banner βλέπετε από έξω αν ο server σας εκτελεί πράγματι την ενημερωμένη έκδοση.

Στο AlmaLinux και στο Rocky Linux

Η σύνδεση και τα αποτυπώματα λειτουργούν με τον ίδιο τρόπο. Η υπηρεσία ονομάζεται sshd αντί για ssh (systemctl status sshd). Το banner δεν περιέχει όνομα διανομής, μόνο την έκδοση του OpenSSH.

Σύνοψη

  • Το SSH είναι η κρυπτογραφημένη σύνδεση προς τον server σας· το ssh είναι ο client και το sshd ο server στη θύρα 22.
  • Στην πρώτη σύνδεση ο client δείχνει το αποτύπωμα του host key. Συγκρίνετέ το με την έξοδο του ssh-keygen -lf στην κονσόλα πριν πληκτρολογήσετε yes.
  • Ο client αποθηκεύει το κλειδί στο ~/.ssh/known_hosts και στο εξής προειδοποιεί μόνος του (trust on first use).
  • Το "REMOTE HOST IDENTIFICATION HAS CHANGED" είναι φυσιολογικό μετά από επανεγκατάσταση· διαφορετικά είναι ύποπτο. Διαγράψτε μια παλιά γραμμή μόνο μετά από έλεγχο, με ssh-keygen -R.
  • Το banner έκδοσης είναι δημόσιο· η προστασία προέρχεται από τις ενημερώσεις, όχι από την απόκρυψη.

Κουίζ

1. Με τι συγκρίνετε το αποτύπωμα που δείχνει το ssh στην πρώτη σύνδεση;



2. Τι κάνει το ~/.ssh/known_hosts;



3. Κάνατε επανεγκατάσταση του VPS σας και λαμβάνετε "REMOTE HOST IDENTIFICATION HAS CHANGED". Ποια είναι η σωστή σειρά;



4. Γιατί ο πρώτος έλεγχος είναι τόσο σημαντικός στο trust on first use;



5. Τι δείχνει το banner έκδοσης ενός SSH server;



Άσκηση

Άσκηση Z1.3: SSH banner και αποτύπωμα (fingerprint) του server σας. Συμπληρώστε τη διεύθυνση του server σας, την έκδοση λογισμικού από το banner (όπως OpenSSH_9.6p1) και το αποτύπωμα ED25519 που ζητήσατε στην κονσόλα με ssh-keygen -lf. Το πρόγραμμα κάνει μία σύνδεση στη θύρα SSH σας, διαβάζει το banner και το host key και κάνει τη σύγκριση. Δεν συνδέεται ως χρήστης.

Άσκηση Z1.3: SSH banner και αποτύπωμα (fingerprint) του server σας

Δεν συνδεόμαστε και δεν δοκιμάζουμε κανέναν κωδικό πρόσβασης ή κλειδί. Πρώτα δείχνετε ότι ο server είναι δικός σας: κάντε κλικ στο "Εμφάνιση του κωδικού μου" και τοποθετήστε ένα αρχείο /.well-known/weboke-cursus-<code>.txt που περιέχει μόνο αυτόν τον κωδικό στον web server του hostname σας. Το ανακτούμε απευθείας από κάθε διεύθυνση IP που ελέγχουμε (IPv4 και IPv6 ξεχωριστά)· μια εγγραφή TXT δεν μετράει εδώ. Ο έλεγχος γίνεται από το heavy.webawere.nl (185.158.167.16 και 2a07:ae80:100:0:185:158:167:16), όχι από τον web server μας. Μόνο για εγγεγραμμένους εκπαιδευόμενους· έως 6 έλεγχοι ανά ώρα ανά server. Σε αυτή την άσκηση κάνουμε μία σύνδεση και διαβάζουμε μόνο το banner και το κλειδί του server· δεν εμφανίζεται καμία απόπειρα σύνδεσης στο log σας.





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

Για περαιτέρω μελέτη

Μια στιγμή…

Ρυθμίστε τα domains σας

Ρυθμίστε για κάθε domain τους nameservers, τη σύνδεση με το hosting σας και ποιος θα είναι ο κάτοχος.

Φόρτωση των domains σας…