242 γραμμές
13 KiB
Markdown
242 γραμμές
13 KiB
Markdown
|
+++
|
|||
|
title = 'Passwordless public key authentication using SSH/OpenSSH'
|
|||
|
date = ''
|
|||
|
description = ''
|
|||
|
author = 'Στέφανος Χαρχαλάκης'
|
|||
|
issue = ['Magaz 35']
|
|||
|
issue_weight = 4
|
|||
|
+++
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
*Ένας βήμα προς βήμα οδηγός για ενεργοποίηση public-key authentication σε SSH/OpenSSH.*
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
**1. Εισαγωγή**
|
|||
|
-------------------------------------------
|
|||
|
|
|||
|
**2. Δημιουργία κλειδιών**
|
|||
|
------------------------------------------------------
|
|||
|
|
|||
|
- [2.1 Δημιουργία DSA κλειδιών με χρήση SSH](#ss2.1)
|
|||
|
- [2.2 Δημιουργία DSA κλειδιών με χρήση OpenSSH](#ss2.2)
|
|||
|
|
|||
|
**3. Configuration του Client**
|
|||
|
-----------------------------------------------------------
|
|||
|
|
|||
|
- [3.1 Configuration του Client (SSH)](#ss3.1)
|
|||
|
- [3.2 Configuration του Client (OpenSSH)](#ss3.2)
|
|||
|
- [3.3 Μετατροπή του public key](#ss3.3)
|
|||
|
- [3.4 Client: OpenSSH, Server: OpenSSH](#ss3.4)
|
|||
|
- [3.5 Client: SSH, Server: SSH](#ss3.5)
|
|||
|
- [3.6 Client: OpenSSH, Server: SSH](#ss3.6)
|
|||
|
- [3.7 Client: SSH, Server: OpenSSH](#ss3.7)
|
|||
|
|
|||
|
**4. Configuration του Server**
|
|||
|
-----------------------------------------------------------
|
|||
|
|
|||
|
- [4.1 Configuration του Server (SSH)](#ss4.1)
|
|||
|
- [4.2 Configuration του Server (OpenSSH)](#ss4.2)
|
|||
|
|
|||
|
**5. Δοκιμή**
|
|||
|
-----------------------------------------
|
|||
|
|
|||
|
|
|||
|
### [1. Εισαγωγή]{#s1}
|
|||
|
|
|||
|
Το κείμενο αυτό περιγράφει τα βήματα τα οποία απαιτούνται για να πραγματοποιηθεί 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. Δημιουργία κλειδιών]{#s2}
|
|||
|
|
|||
|
Τα κλειδιά μπορούν να δημιουργηθούν στο Client ώστε να αποφευχθεί η μεταφορά του private κλειδιού μέσα από το δίκτυο εκτός και αν η μεταφορά γίνει με κάποιο
|
|||
|
ασφαλή τρόπο όπως το sftp.
|
|||
|
|
|||
|
Το κείμενο αυτό περιγράφει την διαδικασία δημιουργίας κλειδιών στη μεριά του Cleint χρησιμοποιώντας SSH ή OpenSSH. Το SSH χρησιμοποιεί το /.ssh2 ενώ το OpenSSH
|
|||
|
χρησιμοποιεί το /.ssh για να αποθηκεύσουν τα αρχείου τους για το SSH2.
|
|||
|
|
|||
|
### [2.1 Δημιουργία DSA κλειδιών με χρήση SSH]{#ss2.1}
|
|||
|
|
|||
|
Για τη δημιουργία των κλειδιών με 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]{#ss2.2}
|
|||
|
|
|||
|
Στην περίπτωση του 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]{#s3}
|
|||
|
|
|||
|
Αυτή τη στιγμή έχουν δημιουργηθεί τα κλειδιά και καλό είναι να μετονομαστούν σε κάτι που να έχει νόημα (π.χ. clntkey και clntkey.pub). Στη συνέχεια θα πρέπει να
|
|||
|
δημιουργηθεί η να αλλαχθεί το configuration του Client ώστε να χρησιμοποιεί αυτό το κλειδί για πιστοποίηση στον Server:
|
|||
|
|
|||
|
### [3.1 Configuration του Client (SSH)]{#ss3.1}
|
|||
|
|
|||
|
Ανοίξτε το clntacnt/.ssh2/identification και προσθέστε:
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Server.hell.gr:
|
|||
|
IdKey clntkey
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
### [3.2 Configuration του Client (OpenSSH)]{#ss3.2}
|
|||
|
|
|||
|
Ανοίξτε το clntacnt/.ssh/config και προσθέστε:
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Host Server.hell.gr
|
|||
|
IdentityFile ~/.ssh/clntkey
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
### [3.3 Μετατροπή του public key]{#ss3.3}
|
|||
|
|
|||
|
Το SSH και το OpenSSH έχουν διαφορετική μορφή για τα αρχεία των public και private κλειδιών. Αν οι δαίμονες στο Client και το Server δεν είναι ίδιοι θα πρέπει
|
|||
|
να γίνει μετατροπή του public key χρησιμοποιώντας το ssh-keygen του OpenSSH. Αυτό θα γίνει στο μηχάνημα στο οποίο υπάρχει το OpenSSH.
|
|||
|
|
|||
|
### [3.4 Client: OpenSSH, Server: OpenSSH]{#ss3.4}
|
|||
|
|
|||
|
Στείλτε το clntkey.pub στο Server και τοποθετήστε το στο srvacnt/.ssh/clntkey.pub.
|
|||
|
|
|||
|
### [3.5 Client: SSH, Server: SSH]{#ss3.5}
|
|||
|
|
|||
|
Στείλτε το clntkey.pub στο Server και τοποθετήστε το στο srvacnt/.ssh2/clntkey.pub.
|
|||
|
|
|||
|
### [3.6 Client: OpenSSH, Server: SSH]{#ss3.6}
|
|||
|
|
|||
|
Πρώτα μετατρέψτε το public key στη μορφή που το χρειάζεται το SSH (στο Client):
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
$ ssh-keygen -e -f clntkey.pub > tmp
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
και στη συνέχεια στείλτε το στο Server και τοποθετήστε το στο srvacnt/.ssh2/clntkey.pub.
|
|||
|
|
|||
|
### [3.7 Client: SSH, Server: OpenSSH]{#ss3.7}
|
|||
|
|
|||
|
Πρώτα στείλτε το public key στο Server τοποθετώντας το στο srvacnt/.ssh/clntkey.pub και στη συνέχεια μετατρέψτε το:
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
$ ssh-keygen -i -f clntkey.pub.tmp > clntkey.pub
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
|
|||
|
### [4. Configuration του Server]{#s4}
|
|||
|
|
|||
|
### [4.1 Configuration του Server (SSH)]{#ss4.1}
|
|||
|
|
|||
|
Αυτή τι στιγμή το 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)]{#ss4.2}
|
|||
|
|
|||
|
Αυτή τι στιγμή το 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. Δοκιμή]{#s5}
|
|||
|
|
|||
|
Πηγαίνετε στο Client και σαν clntacnt δώστε:
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
$ ssh srvacnt@Server.hell.gr
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Αν όλα πήγαν καλά θα σας βάλει μέσα στο Server χωρίς να ζητήσει password. Πρέπει να δώσετε ολόκληρο το hostname, ακριβώς όπως υπάρχει μέσα στο configuration
|
|||
|
file του Client.
|
|||
|
|
|||
|
|
|||
|
### [6. Δοκιμή]{#s6}
|
|||
|
|
|||
|
Πηγαίνετε στο Client και σαν clntacnt δώστε:
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
$ ssh srvacnt@Server.hell.gr
|
|||
|
|
|||
|
----------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|||
|
|
|||
|
Αν όλα πήγαν καλά θα σας βάλει μέσα στο Server χωρίς να ζητήσει password. Πρέπει να δώσετε ολόκληρο το hostname, ακριβώς όπως υπάρχει μέσα στο configuration
|