Πρώτο commit
Αυτό το commit περιλαμβάνεται σε:
commit
8ec8e9bee2
451 αρχεία άλλαξαν με 46736 προσθήκες και 0 διαγραφές
241
content/articles/35/04_pubkey-gr.md
Κανονικό αρχείο
241
content/articles/35/04_pubkey-gr.md
Κανονικό αρχείο
|
|
@ -0,0 +1,241 @@
|
|||
+++
|
||||
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
|
||||
Φόρτωση…
Προσθήκη πίνακα
Προσθήκη υπερσυνδέσμου
Παράθεση σε νέο ζήτημα