Σάββατο, 11 Οκτωβρίου 2008

Ξεφορτώσου το password όταν θέλεις να log in με ssh

Ο Frasier (άσε το λινκ για μετά) έχει έναν υπολογιστή στο σπίτι, που τον έχει ονομάσει peanut και τρέχει ubuntu ή os x. Επιπλέον, διαθέτει λογαριασμούς σε τρεις διαφορετικούς υπολογιστές:
  1. snickers.universityOfMars.edu.com (στο πανεπιστήμιο),
  2. serverΧ.systemsY.org (τη δουλειά) και
  3. 164.38.55.3 (το μηχάνημα της κοπέλας του, χρησιμοποιώντας το static IP που της δίνει ο παροχός της),
στους οποίους έχει τη δυνατότητα να συνδέεται μέσω ssh. Για να συνδεθεί, έχει από ένα username και password για κάθε λογαριασμό. Οι γραμμές 1-3 δείχνουν τον Frasier να συνδέεται στον υπολογιστή της δουλειάς του.
01. [Frasier@peanut]$ ssh username2@serverX.systemsY.org
02. username2's password: password2
03. [username2@server2 ~]$
Πώς θα γίνει κάθε φορά που ο Frasier θέλει να κάνει login στο πανεπιστήμιο, τη δουλειά ή τον υπολογιστή της κοπέλας του, να μη γράφει το εκάστοτε username-password; Γιατί, εκτός του ότι βαριέται, δε θυμάται ποτέ τα ονόματά τους και ποιο username-password αντιστοιχεί πού;


Βήμα 1 (προαιρετικό):
Για να κάνει τη ζωή του πιο εύκολη, ο Frasier διαλέγει τρεις εύκολες λέξεις ώστε ν'αντικαταστήσει το δεύτερο μέρος
της εντολής ssh (από τη γραμμή 1, αυτό: 'username2@serverX.systemsY.org') με κάτι πιο σύντομο. Καταχωρεί τα νέα ψευδώνυμα (aliases) στο αρχείο .ssh/config του υπολογιστή του (γραμμές 4-6), το οποίο ανοίγει με τον vi (γραμμή 7: αν δεν υπάρχει ήδη, τότε δημιουργείται ένα άδειο αρχείο).
04. [Frasier@peanut]$ pwd
05. /Users/Frasier
06. [Frasier@peanut]$ cd .ssh07. [Frasier@peanut .ssh]$ vi config
Οι γραμμές 8-18 δείχνουν τι γράφει ο Frasier στο αρχείο .ssh/config.
08. HOST university
09. HOSTNAME snickers.universityOfMars.edu.com
10. USER username1
11.
12. HOST work
13. HOSTNAME serverX.systemsY.org
14. USER username2
15.
16. HOST anna
17. HOSTNAME
164.38.55.3
18. USER username3
Πλέον, ο Frasier κάνει login στον υπολογιστή της δουλειάς με τον τρόπο που δείχνουν οι γραμμές 19-21 (αντί των γραμμών 1-3).
19. [Frasier@peanut]$ ssh work20. username2's password: password2
21. [username2@server2 ~]$

Βήμα 2:
Για να ξεφορτωθεί ο Frasier τους κωδικούς του, πρέπει να τους αντικαταστήσει μ'ένα κλειδί. Για την ακρίβεια θα δημιουργήσει δύο κλειδιά (keys), ένα ιδιωτικό (private) κι ένα δημόσιο (public), εκτελώντας την εντολή της γραμμής 22. Τα αρχεία-κλειδιά που παράγονται, φαίνονται στη γραμμή 24, .ssh/id_dsa (private key) και .ssh/id_dsa.pub (public key).

22. [Frasier@peanut .ssh]$ ssh-keygen -t dsa
23. [Frasier@peanut .ssh]$ ls
24. config id_dsa id_dsa.pub
Γιατί DSA και όχι RSA; Επειδή ο Fγasieγ δε μπογεί να πει γο... ή (αν δεν μας ικανοποιεί αυτή η απάντηση) διαλέγουμε το πλήκτρο που είναι πιο κοντά μας, το D, όχι το R.


Βήμα 3:
Ο Frasier αντιγράφει το δημόσιο κλειδί του (.ssh/id_dsa.pub) στον υπολογιστή της δουλειάς του με τις εντολές των γραμμών 25-28, οπότε και χρησιμοποιεί για τελευταία φορά τον κωδικό σύνδεσης (καλό είναι, βέβαια, να μην τον ξεγράψει παντελώς από τη μνήμη του).
25. [Frasier@peanut .ssh]$ scp ./id_dsa.pub work:key
26. [Frasier@peanut .ssh]$ ssh work
27.
username2's password: password2
28.
[username2@server2 ~]$ cat key >> .ssh/authorized_keys
29.
[username2@server2 ~]$ exit
30.
[Frasier@peanut .ssh]$ ssh work
31.
[username2@server2 ~]$
Την επόμενη φορά που δοκιμάζει να κάνει login στον ίδιο υπολογιστή (γραμμές 30-31), η σύνδεση γίνεται με τη βοήθεια του κλειδιού του, χωρίς να ζητηθεί το password.

Δεν υπάρχουν σχόλια: