Προς το περιεχόμενο

SSH Server


molf48

Προτεινόμενες αναρτήσεις

Έχω ένα μηχανήμα με Fedora Core 6 και τρέχει την υπήρεσια SSH Server. Οι απομακρυσμένοι χρήστες συνδέονται μέσω SSH χρησιμοποιωντας User Name και Password κάνοντας Accept το RSA key. Ποιες ρύθμίσεις πρέπει να κάνω ώστε: Οι απομακρύσμενοι χρήστες να έχουν εγκαταστημένο ένα RSA key στον υπολογιστή τους και όταν θα κάνουν προσπάθεια για Login στον Server να ελέγχει ο τελευταίος αν το απομακρύσμενο μηχάνημα έχει το RSA key και να κανεί accept το User Name και το Password μόνος σε αυτούς που το διαθέτουν. Ευχαριστώ.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Συνοπτικά:

 

  • Πειράζεις το αρχείο ρυθμίσεων του openssh server (/etc/ssh/sshd_config):
    • Ενεργοποιείς την αυθεντικοποίηση μέσω κλειδιών
      >RSAAuthentication yes
      PubkeyAuthentication yes
      AuthorizedKeysFile     .ssh/authorized_keys


    • Απενεργοποιείς την σύνδεση χωρίς κλειδί
      >ChallengeResponseAuthentication no

     

    [*] Φτιάχνεις ένα ζευγάρι RSA κλειδιών. Π.χ. από τον linux server:

     

    ># ssh-keygen -f [color="RoyalBlue"]user[/color]-rsa-key -t rsa

    θα δημιουργηθούν στο server 2 αρχεία, ένα περιέχει το private key (user-rsa-key) και ένα το public key (user-rsa-key.pub). Το public είναι αυτό που θα μήνει στο server, το private θα το χει ο χρήστης στο μηχάνημά του. Όταν ερωτηθείς διάλεξε τον κωδικό που θέλεις.

  • Προσθέτεις το περιεχόμενο του public key στο αρχείο .ssh/authorized_keys μέσα στον κατάλογο του user (ή όπου αλλού όρισες την AuthorizedKeysFile προηγουμένως) και του δίνεις ελάχιστα δικαιώματα. Π.χ.
    ># cat [color="RoyalBlue"]user[/color]-rsa-key.pub >> /home/[color="RoyalBlue"]user[/color]/.ssh/authorized_keys
    # rm [color="RoyalBlue"]user[/color]-rsa-key.pub
    # chown -R [color="RoyalBlue"]user[/color] /home/[color="RoyalBlue"]user[/color]/.ssh
    # chmod 600 /home/[color="RoyalBlue"]user[/color]/.ssh/authorized_keys 


    Μπορείς επίσης να περιορίσεις από που θα επιτρέπεται να συνδεθεί ένας χρήστης, με κριτήριο είτε μια διεύθυνση IP, είτε ένα reverse DNS record, βάζοντας μπροστά από το κλειδί μια παράμετρο from, ως εξής:

    >from="*.example.com,1.2.*" ...


    Στο παραπάνω παράδειγμα, κάποιος θα μπορούσε να συνδεθεί μόνο από μηχανήματα που έχουν διεύθυνση η οποία ξεκινάει από 1.2.οτιδήποτε ή από μηχανήματα που το reverse DNS της IP διεύθυνσής τους μεταφράζεται σε οτιδήποτε.example.com.

  • Δίνεις το private κλειδί στον χρήστη.
    • Αν σκοπεύει να συνδεθεί από λειτουργικό unix (που έχει εγκατεστημένο openssh client), απλά τοποθετεί το κλειδί σε μια τοποθεσία μέσα στο home του και την ορίζει στο αρχείο ρυθμίσεων του openssh client (/etc/ssh/ssh_config). Π.χ.
      >PreferredAuthentications=publickey
      IdentityFile /path/to/secure/directory/[color="RoyalBlue"]user[/color]-rsa-key


    • Αν σκοπεύει να συνδεθεί από windows, μέσω π.χ. του putty client, θα πρέπει να μετατρέψει το κλειδί στο format που καταλαβαίνει ο client, στην περίπτωση του putty φορτώνοντας το στο puttygen και κάνοντάς το convert. Μετά ορίζει την αυθεντικοποίηση μέσω κλειδιού στο interface του putty

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Σίγουρα το public key του χρήστη είναι στον server, στην τοποθεσία που δείχνει η AuthorizedKeysFile στο /etc/ssh/sshd_config, και δεν έχεις βάλει κάποια from μέσα που το περιορίζει;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 2 εβδομάδες αργότερα...

Είναι εντάξει τώρα ευχαριστώ.. Έχω βέβαια ένα προβλημά όταν πάω να κάνω tunnel με VNC.. Αφού εχώ κανει ssh -l molf48 172.27.31.30 -i molf48-rsa-key 5900:localhost:5900 κανει κανονικα authorized και με εισαγεί στον Server αλλά όταν βάζω τον VNCViewer localhost:0 με απορριπτει.. Μήπως έχεις καμιά ιδέα;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • 9 μήνες μετά...

Να προσθέσω πως, εάν θέλουμε να κάνουμε login σε περισσότερα μηχανήματα από ένα, ή σε ένα μηχάνημα με πολλαπλούς χρήστες, πρέπει να δηλώσουμε στο configuration του ssh, paths για πολλαπλά κλειδιά.

Δηλαδή να αντιγράψουμε το /etc/ssh/ssh_config στο ~/.ssh/config ή ακόμα και να δημιουργήσουμε ένα νέο ~/.ssh/config. Στο config του χρήστη πλέον θα δηλώσουμε πολλαπλά identities, ένα για κάθε login.

>
IdentityFile /path/to/secure/directory/user-rsa-key
IdentityFile /path/to/secure/directory/user-rsa-key1
IdentityFile /path/to/secure/directory/user-rsa-key2
IdentityFile /path/to/secure/directory/user-rsa-key3
IdentityFile /path/to/secure/directory/user-rsa-key4
IdentityFile /path/to/secure/directory/user-rsa-key5

κτλ

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Θα δουλέψει, απλά προσωπικά δε μου αρέσει σα λύση γιατί θα προσπαθήσει να κάνει authenticate με όλα τα κλειδιά σειριακά μέχρι να βρει το σωστό, προκαλώντας authentication failures στο server.

 

Μια πιο κομψή λύση είναι να ορίζουμε το σωστό key file με την -i (μπορεί άνετα να αυτοματοποιηθεί με aliases ή ένα μίνι wrapper σε shell script ώστε να μη χρειάζεται να γράφουμε τις παραμέτρους κάθε φορά).

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...