Περιεχόμενα
Κατέγραψε μία αποτυχία με την υπάρχουσα πρόσβαση διαθέσιμη
Οι εντολές client εκτελούνται στον υπολογιστή σου με Linux, macOS ή WSL. Οι εντολές server εκτελούνται από υπάρχον SSH ή την αυθεντικοποιημένη κονσόλα. Αντικατάστησε διεύθυνση 203.0.113.10, χρήστη ubuntu, θύρα 22 και αρχείο ιδιωτικού κλειδιού με όσα πραγματικά χρησιμοποιείς.
ssh -G -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10
ssh -v -S none -o ConnectTimeout=10 -o StrictHostKeyChecking=ask -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Δες hostname, user, port, identityfile και proxy. Η δεύτερη εντολή απενεργοποιεί την κοινή χρήση σύνδεσης μόνο για αυτή την προσπάθεια. Κατέγραψε ώρα και τελικό σφάλμα. Πριν δεχτείς νέο host key, επαλήθευσε τον server. Μην κοινοποιήσεις ιδιωτικό κλειδί και αφαίρεσε προσωπικά στοιχεία από debug logs.
Επίλεξε έλεγχο σύμφωνα με το στάδιο αποτυχίας
Σε μικρή οθόνη, σύρε τον πίνακα οριζόντια για να δεις όλες τις στήλες.
| Μήνυμα ή στάδιο | Τι δείχνει | Επόμενος έλεγχος |
|---|---|---|
| Connection timed out πριν τη σύνδεση | Δεν ολοκληρώθηκε TCP σύνδεση | Διεύθυνση, διαδρομή, firewall, κατάσταση VM |
| Connection refused | Ενεργή απόρριψη στη διεύθυνση και θύρα | Σωστή θύρα, listener, κανόνας απόρριψης |
| Permission denied (publickey) | Έφτασε στην αυθεντικοποίηση αλλά απορρίφθηκε | Χρήστης, κλειδί και πολιτική server |
| REMOTE HOST IDENTIFICATION HAS CHANGED | Διαφέρει η αποθηκευμένη ταυτότητα | Αξιόπιστη επαλήθευση host key |
Τα μηνύματα περιορίζουν την έρευνα, δεν αποδεικνύουν μία μοναδική αιτία. Αν έχει ήδη εμφανιστεί Connection established πριν το timeout, εξέτασε handshake και server logs αντί να θεωρήσεις ότι αποκλείστηκαν όλα τα πακέτα.
Σε timeout ακολούθησε τη σωστή διαδρομή δικτύου
Σύγκρινε τον προορισμό του ssh -v με την τρέχουσα IP στο panel. Παλιό DNS ή άλλη IPv6 μπορεί να σε στείλει αλλού. Επιβεβαίωσε αν απαιτείται δημόσια IP, VPN ή jump host.
Η VM πρέπει να λειτουργεί και η δημόσια δρομολόγηση να υπάρχει. Στο firewall παρόχου έλεγξε πραγματική θύρα και τρέχουσα δημόσια διεύθυνση προέλευσης. Η οικιακή IP μπορεί να αλλάξει ενώ ο κανόνας /32 μένει ίδιος. Εξέτασε και το guest firewall από την κονσόλα.
Στο OCI μετρούν security lists, NSG, routes και guest rules. Η εγκατάσταση UFW ή το άδειασμα iptables δεν είναι διαγνωστικό βήμα. Η διαδικασία Oracle περιγράφει τη διάταξη. Ένα αποτυχημένο ping μόνο του δεν αποδεικνύει αποτυχία SSH.
Σε refusal εξέτασε την υπηρεσία που ακούει
Η απόρριψη δεν επιβεβαιώνει ότι έφτασες στον σωστό server. Έλεγξε ταυτότητα και θύρα και μετά εκτέλεσε αυτούς τους ελέγχους ανάγνωσης πάνω στον server με υπάρχουσα πρόσβαση ή κονσόλα:
systemctl status ssh.service ssh.socket --no-pager
sudo ss -lntp
sudo /usr/sbin/sshd -t
sudo journalctl -u ssh.service -u ssh.socket --since '15 minutes ago' --no-pagerΒρες listener στη σωστή διεύθυνση και θύρα και αντιστοίχισε τα logs στην ώρα της προσπάθειας. Το Ubuntu μπορεί να χρησιμοποιεί socket activation: αν το ssh.socket ακούει, ένα ανενεργό ssh.service δεν αποδεικνύει ότι το SSH είναι εκτός λειτουργίας.
Το sshd -t ελέγχει ρυθμίσεις και host keys χωρίς να ξεκινά daemon. Η επιτυχία δεν είναι έλεγχος δικτύου. Αν αναφέρει σφάλμα, εντόπισε αρχείο και ρύθμιση πριν κάνεις reload.
Σε απόρριψη κλειδιού σύγκρινε χρήστη και ταυτότητα
Χρησιμοποίησε τον αρχικό λογαριασμό του παρόχου ή τον δικό σου διαχειριστή. Στο debug βρες το fingerprint που προσφέρεται. Για να μειώσεις άσχετα κλειδιά του agent, δοκίμασε στον υπολογιστή σου:
ssh -v -S none -o IdentitiesOnly=yes -o StrictHostKeyChecking=ask -p 22 -i ~/.ssh/ubuntu_vps ubuntu@203.0.113.10Ρυθμίσεις IdentityFile μπορεί να εξακολουθούν να εφαρμόζονται· δες ssh -G. Αν το τοπικό ιδιωτικό κλειδί δεν διαβάζεται ή έχει υπερβολικά ανοικτά δικαιώματα, διόρθωσε πρώτα εκεί την πρόσβαση.
Στον server έλεγξε τον λογαριασμό και τα δημόσια authorized keys. Αντί για /home/ubuntu χρησιμοποίησε το home που δίνει το getent:
getent passwd ubuntu
sudo ls -ld /home/ubuntu /home/ubuntu/.ssh /home/ubuntu/.ssh/authorized_keys
sudo ssh-keygen -lf /home/ubuntu/.ssh/authorized_keysΣύγκρινε fingerprints και έλεγξε journal για ιδιοκτησία, δικαιώματα ή πολιτική λογαριασμού. Σε άλλη διάταξη δες AuthorizedKeysFile, Include και Match, καθώς και υπηρεσίες κλειδιών του παρόχου. Διατήρησε τα υπάρχοντα keys· μην απενεργοποιήσεις StrictModes για να κρύψεις την αιτία.
Σε αλλαγή host key πιστοποίησε πρώτα τη μηχανή
Η επανεγκατάσταση ή νέα ανάθεση IP μπορεί να αλλάξει το κλειδί, αλλά μια απρόσμενη αλλαγή μπορεί να σημαίνει λάθος endpoint ή υποκλοπή. Επιβεβαίωσε αναγνωριστικό instance και προγραμματισμένες αλλαγές μέσα από αυθεντικοποιημένο panel.
Στην αξιόπιστη κονσόλα του guest έλεγξε το δημόσιο host key που αντιστοιχεί στον αλγόριθμο του client. Για Ed25519:
sudo ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub -E sha256Σύγκρινε το SHA256 με την προειδοποίηση. Πρόκειται για κλειδί server, όχι το δικό σου login key ή το κλειδί πύλης κονσόλας. Μετά από επιβεβαιωμένη αλλαγή, κράτησε backup και ενημέρωσε μόνο την αντίστοιχη εγγραφή. Μη διαγράψεις όλο το known_hosts και μην παρακάμψεις τον έλεγχο. Αν η αλλαγή παραμένει ανεξήγητη, σταμάτησε τη σύνδεση.
Επιβεβαίωσε τη στοχευμένη διόρθωση με νέα είσοδο
Διόρθωσε τη συγκεκριμένη διεύθυνση, χρήστη, κλειδί, στενό κανόνα δικτύου ή ρύθμιση που αποδείχθηκε λανθασμένη. Διατήρησε ανεξάρτητη πρόσβαση και έλεγξε τη διαμόρφωση SSH πριν την εφαρμόσεις. Αλλαγή θύρας μπορεί να απαιτεί και αλλαγή socket activation.
Επανάλαβε την αρχική προσπάθεια χωρίς connection sharing. Επιβεβαίωσε νέο login στον σωστό χρήστη και την απαιτούμενη πρόσβαση sudo. Το ότι μια παλιά συνεδρία παραμένει ανοικτή δεν είναι αυτός ο έλεγχος. Κατέγραψε αιτία και διόρθωση και συνέχισε τη ρύθμιση του ιστοτόπου.
Οι εντολές επιθεωρούν κατάσταση ή επιχειρούν SSH· δεν εκτελέστηκαν στον δικό σου server. Κάθε διόρθωση πρέπει να ταιριάζει στα ευρήματα και να κρατά διαθέσιμη διαδρομή ανάκτησης.
Συχνές ερωτήσεις
Να επανεγκαταστήσω Ubuntu για να διορθώσω SSH;
Πρώτα εντόπισε την αιτία. Λάθος IP, χρήστης ή κλειδί δεν απαιτεί επανεγκατάσταση, η οποία μπορεί να καταστρέψει δεδομένα.
Η κονσόλα που λειτουργεί αποδεικνύει ότι λειτουργεί και SSH;
Όχι, χρησιμοποιούν διαφορετική διαδρομή. Listener, λογαριασμός, αυθεντικοποίηση και κανόνες δικτύου πρέπει να επιτρέπουν τη δημόσια σύνδεση.
Να σβήσω το known_hosts;
Όχι ολόκληρο. Επαλήθευσε πρώτα το νέο host key και χειρίσου μόνο την εγγραφή του συγκεκριμένου server, διατηρώντας τις υπόλοιπες.