💾 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

View Raw

More Information

⬅️ Previous capture (2024-02-05)

-=-=-=-=-=-=-

Passwordless public key authentication using SSH/OpenSSH

Στέφανος Χαρχαλάκης
Φεβ 2006

Ένας βήμα προς βήμα οδηγός για ενεργοποίηση public-key authentication σε SSH/OpenSSH.

1. Εισαγωγή

2. Δημιουργία κλειδιών

3. Configuration του Client

4. Configuration του Server

5. Δοκιμή

[1. Εισαγωγή]

Το κείμενο αυτό περιγράφει τα βήματα τα οποία απαιτούνται για να πραγματοποιηθεί public key authentication χρησιμοποιώντας SSH ή/και OpenSSH.

Για τις ανάγκες του κειμένου υποθέτουμε ότι:

Για να λειτουργήσει η πιστοποίηση δεν πρέπει να είναι κλειδωμένος ο srvacnt ούτε να έχει λήξει το password του.

Για την πραγματοποίηση του public key authentication ο χρήστης πρέπει:

[2. Δημιουργία κλειδιών]

Τα κλειδιά μπορούν να δημιουργηθούν στο Client ώστε να αποφευχθεί η μεταφορά του private κλειδιού μέσα από το δίκτυο εκτός και αν η μεταφορά γίνει με κάποιο ασφαλή τρόπο όπως το sftp.

Το κείμενο αυτό περιγράφει την διαδικασία δημιουργίας κλειδιών στη μεριά του Cleint χρησιμοποιώντας SSH ή OpenSSH. Το SSH χρησιμοποιεί το  /.ssh2 ενώ το OpenSSH χρησιμοποιεί το  /.ssh για να αποθηκεύσουν τα αρχείου τους για το SSH2.

[2.1 Δημιουργία DSA κλειδιών με χρήση SSH]

Για τη δημιουργία των κλειδιών με 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


[2.2 Δημιουργία DSA κλειδιών με χρήση OpenSSH]

Στην περίπτωση του 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



[3. Configuration του Client]

Αυτή τη στιγμή έχουν δημιουργηθεί τα κλειδιά και καλό είναι να μετονομαστούν σε κάτι που να έχει νόημα (π.χ. clntkey και clntkey.pub). Στη συνέχεια θα πρέπει να δημιουργηθεί η να αλλαχθεί το configuration του Client ώστε να χρησιμοποιεί αυτό το κλειδί για πιστοποίηση στον Server:

[3.1 Configuration του Client (SSH)]

Ανοίξτε το  clntacnt/.ssh2/identification και προσθέστε:

Server.hell.gr:
        IdKey         clntkey


[3.2 Configuration του Client (OpenSSH)]

Ανοίξτε το  clntacnt/.ssh/config και προσθέστε:

Host Server.hell.gr
       IdentityFile  ~/.ssh/clntkey


[3.3 Μετατροπή του public key]

Το SSH και το OpenSSH έχουν διαφορετική μορφή για τα αρχεία των public και private κλειδιών. Αν οι δαίμονες στο Client και το Server δεν είναι ίδιοι θα πρέπει να γίνει μετατροπή του public key χρησιμοποιώντας το ssh-keygen του OpenSSH. Αυτό θα γίνει στο μηχάνημα στο οποίο υπάρχει το OpenSSH.

[3.4 Client: OpenSSH, Server: OpenSSH]

Στείλτε το clntkey.pub στο Server και τοποθετήστε το στο  srvacnt/.ssh/clntkey.pub.

[3.5 Client: SSH, Server: SSH]

Στείλτε το clntkey.pub στο Server και τοποθετήστε το στο  srvacnt/.ssh2/clntkey.pub.

[3.6 Client: OpenSSH, Server: SSH]

Πρώτα μετατρέψτε το public key στη μορφή που το χρειάζεται το SSH (στο Client):

$ ssh-keygen -e -f clntkey.pub > tmp


και στη συνέχεια στείλτε το στο Server και τοποθετήστε το στο  srvacnt/.ssh2/clntkey.pub.

[3.7 Client: SSH, Server: OpenSSH]

Πρώτα στείλτε το public key στο Server τοποθετώντας το στο  srvacnt/.ssh/clntkey.pub και στη συνέχεια μετατρέψτε το:

$ ssh-keygen -i -f clntkey.pub.tmp > clntkey.pub



[4. Configuration του Server]

[4.1 Configuration του Server (SSH)]

Αυτή τι στιγμή το public key πρέπει να βρίσκεται στο  srvacnt/.ssh2/clntkey.pub. Ανοίξτε το  srvacnt/.ssh2/authorization και προσθέστε:

10.1.1.2:
        Key   clntkey.pub


(Το 10.1.1.2 είναι η IP διεύθυνση του Client)

[4.2 Configuration του Server (OpenSSH)]

Αυτή τι στιγμή το 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



[5. Δοκιμή]

Πηγαίνετε στο Client και σαν clntacnt δώστε:

$ ssh srvacnt@Server.hell.gr


Αν όλα πήγαν καλά θα σας βάλει μέσα στο Server χωρίς να ζητήσει password. Πρέπει να δώσετε ολόκληρο το hostname, ακριβώς όπως υπάρχει μέσα στο configuration file του Client.

[6. Δοκιμή]

Πηγαίνετε στο Client και σαν clntacnt δώστε:

$ ssh srvacnt@Server.hell.gr


Αν όλα πήγαν καλά θα σας βάλει μέσα στο Server χωρίς να ζητήσει password. Πρέπει να δώσετε ολόκληρο το hostname, ακριβώς όπως υπάρχει μέσα στο configuration

Αρχική Σελίδα