241 γραμμές
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			241 γραμμές
		
	
	
	
		
			13 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
+++
 | 
						||
title = 'Passwordless public key authentication using SSH/OpenSSH'
 | 
						||
date = '2006-02-01T00:00:00Z'
 | 
						||
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
 |