-- Leo's gemini proxy

-- Connecting to magaz.hellug.gr:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Passwordless public key authentication using SSH/OpenSSH


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

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


1. Εισαγωγή


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


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

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


3. Configuration του Client


[3.1 Configuration του Client (SSH)]

[3.2 Configuration του Client (OpenSSH)]

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

[3.4 Client: OpenSSH, Server: OpenSSH]

[3.5 Client: SSH, Server: SSH]

[3.6 Client: OpenSSH, Server: SSH]

[3.7 Client: SSH, Server: OpenSSH]


4. Configuration του Server


[4.1 Configuration του Server (SSH)]

[4.2 Configuration του Server (OpenSSH)]


5. Δοκιμή


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


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


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


Υπάρχει ένα μηχάνημα με το όνομα Client (hostname: Client.hell.gr, IP: 10.1.1.2).

Υπάρχει ένα μηχάνημα με το όνομα Server (hostname: Server.hell.gr, IP: 10.1.1.3).

Υπάρχει ένα account με το όνομα clntacnt στο Client.

Υπάρχει ένα account με το όνομα srvacnt στο Server.

Ο clntacnt@Client θα προσπαθήσει να συνδεθεί στο srvacnt@Server.

Θα χρησιμοποιηθεί η έκδοση 2 του SSH πρωτοκόλλου και ο DSA σαν αλγόριθμος παραγωγής κλειδιού.


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


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


Να δημιουργήσει ένα ζευγάρι public/private DSA κλειδιών.

Να έχει τα public και private κλειδιά στο Client.

Να έχει το public κλειδί στο Server.


[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


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

-- Response ended

-- Page fetched on Sat May 11 11:31:21 2024