💾 Archived View for magaz.hellug.gr › 35 › 04_pubkey-gr › index.gmi captured on 2024-08-18 at 17:38:01. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2024-02-05)
-=-=-=-=-=-=-
Στέφανος Χαρχαλάκης Φεβ 2006
Ένας βήμα προς βήμα οδηγός για ενεργοποίηση public-key authentication σε SSH/OpenSSH.
1. Εισαγωγή
2. Δημιουργία κλειδιών
3. Configuration του Client
4. Configuration του Server
5. Δοκιμή
Το κείμενο αυτό περιγράφει τα βήματα τα οποία απαιτούνται για να πραγματοποιηθεί public key authentication χρησιμοποιώντας SSH ή/και OpenSSH.
Για τις ανάγκες του κειμένου υποθέτουμε ότι:
Για να λειτουργήσει η πιστοποίηση δεν πρέπει να είναι κλειδωμένος ο srvacnt ούτε να έχει λήξει το password του.
Για την πραγματοποίηση του public key authentication ο χρήστης πρέπει:
Τα κλειδιά μπορούν να δημιουργηθούν στο Client ώστε να αποφευχθεί η μεταφορά του private κλειδιού μέσα από το δίκτυο εκτός και αν η μεταφορά γίνει με κάποιο ασφαλή τρόπο όπως το sftp.
Το κείμενο αυτό περιγράφει την διαδικασία δημιουργίας κλειδιών στη μεριά του Cleint χρησιμοποιώντας SSH ή OpenSSH. Το SSH χρησιμοποιεί το /.ssh2 ενώ το OpenSSH χρησιμοποιεί το /.ssh για να αποθηκεύσουν τα αρχείου τους για το SSH2.
Για τη δημιουργία των κλειδιών με SSH χρησιμοποιείστε το ssh-keygen2 χωρίς να δώσετε κάποιο passphrase (πατήστε enter όταν ζητηθεί):
$ ssh-keygen2 Generating 1024-bit dsa key pair 3 o.oOo.ooOo.o Key generated. 1024-bit dsa, clntacnt@Client, Thu Mar 06 2003 17:20:35 +0200 Passphrase : Again : Key is stored with NULL passphrase. (You can ignore the following warning if you are generating hostkeys.) This is not recommended. Don't do this unless you know what you're doing. If file system protections fail (someone can access the keyfile), or if the super-user is malicious, your key can be used without the deciphering effort. Private key saved to /home/clntacnt/.ssh2/id_dsa_1024_a Public key saved to /home/clntacnt/.ssh2/id_dsa_1024_a.pub
Στην περίπτωση του OpenSSH χρησιμοποιείστε το ssh-keygen χωρίς να δώσετε κάποιο passphrase:
$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/home/clntacnt/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/clntacnt/.ssh/id_dsa. Your public key has been saved in /home/clntacnt/.ssh/id_dsa.pub. The key fingerprint is: 04:91:c8:22:7b:aa:2a:c4:e7:66:1e:61:1e:2b:32:d8 clntacnt@Client
Αυτή τη στιγμή έχουν δημιουργηθεί τα κλειδιά και καλό είναι να μετονομαστούν σε κάτι που να έχει νόημα (π.χ. clntkey και clntkey.pub). Στη συνέχεια θα πρέπει να δημιουργηθεί η να αλλαχθεί το configuration του Client ώστε να χρησιμοποιεί αυτό το κλειδί για πιστοποίηση στον Server:
Ανοίξτε το clntacnt/.ssh2/identification και προσθέστε:
Server.hell.gr: IdKey clntkey
Ανοίξτε το clntacnt/.ssh/config και προσθέστε:
Host Server.hell.gr IdentityFile ~/.ssh/clntkey
Το SSH και το OpenSSH έχουν διαφορετική μορφή για τα αρχεία των public και private κλειδιών. Αν οι δαίμονες στο Client και το Server δεν είναι ίδιοι θα πρέπει να γίνει μετατροπή του public key χρησιμοποιώντας το ssh-keygen του OpenSSH. Αυτό θα γίνει στο μηχάνημα στο οποίο υπάρχει το OpenSSH.
Στείλτε το clntkey.pub στο Server και τοποθετήστε το στο srvacnt/.ssh/clntkey.pub.
Στείλτε το clntkey.pub στο Server και τοποθετήστε το στο srvacnt/.ssh2/clntkey.pub.
Πρώτα μετατρέψτε το public key στη μορφή που το χρειάζεται το SSH (στο Client):
$ ssh-keygen -e -f clntkey.pub > tmp
και στη συνέχεια στείλτε το στο Server και τοποθετήστε το στο srvacnt/.ssh2/clntkey.pub.
Πρώτα στείλτε το public key στο Server τοποθετώντας το στο srvacnt/.ssh/clntkey.pub και στη συνέχεια μετατρέψτε το:
$ ssh-keygen -i -f clntkey.pub.tmp > clntkey.pub
Αυτή τι στιγμή το public key πρέπει να βρίσκεται στο srvacnt/.ssh2/clntkey.pub. Ανοίξτε το srvacnt/.ssh2/authorization και προσθέστε:
10.1.1.2: Key clntkey.pub
(Το 10.1.1.2 είναι η IP διεύθυνση του Client)
Αυτή τι στιγμή το public key πρέπει να βρίσκεται στο srvacnt/.ssh/clntkey.pub. Ανοίξτε το και προσθέστε στην αρχή του το ``from="Client.hell.gr"''. Το όλο clntkey.pub πρέπει να δείχνει κάπως έτσι:
from="client.hell.gr" ssh-dss AAAAB3NzaC1kc .... gSlSJA==
Τέλος, προσθέστε το κλειδί αυτό στο τέλος του srvacnt/.ssh/authorized_keys:
$ cat clntkey.pub >> authorized_keys
Πηγαίνετε στο Client και σαν clntacnt δώστε:
$ ssh srvacnt@Server.hell.gr
Αν όλα πήγαν καλά θα σας βάλει μέσα στο Server χωρίς να ζητήσει password. Πρέπει να δώσετε ολόκληρο το hostname, ακριβώς όπως υπάρχει μέσα στο configuration file του Client.
Πηγαίνετε στο Client και σαν clntacnt δώστε:
$ ssh srvacnt@Server.hell.gr
Αν όλα πήγαν καλά θα σας βάλει μέσα στο Server χωρίς να ζητήσει password. Πρέπει να δώσετε ολόκληρο το hostname, ακριβώς όπως υπάρχει μέσα στο configuration