How to setup SSH Server

slackware | Παρ, 03/20/2009 - 14:34 | 14' | 11

How to setup SSH Server...

Τι είναι?

Το SSH Secure SHell είναι μια ασφαλής σύνδεση σε ένα άλλο Η/Υ είτε για να μεταφέρουμε αρχεία,
είτε για administration. Το SSH αναπτύχθηκε για να αντικαταστήσει το rsh το οποίο δεν σου δίνει
την ασφάλεια του SSH.

Για να μπορέσει να αποκτήσει πρόσβαση κάνεις σε κάποιον Η/Υ μέσω ssh πρέπει να πληρεί τις παρακάτω
προυποθέσεις:

1) Να έχει unix account,
2) Το μηχάνημα που θέλει να συνδεθεί να έχει ενεργό τον ssh server
3) Να ξέρει σε ποιά πόρτα ακούει ο ssh server. H default ειναι η 22, αλλά μπορεί να ακούει
και στην 2204,3508,8082, κλπ.
4) Να έχει ένα ssh client, όπως putth, ssh (for *nix)

Πως δουλεύει...

Πριν ξεκινήσουμε για να φτιάξετε private/public keys χρησιμοποιείτε το ssh-keygen, όπως φαίνεται στο παρακάτω:
 

[[email protected] ~]$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gkapel/.ssh/id_rsa):

και συνεχίζει... για ευνόητους λόγους δεν το ολοκλήρωσα.

Ο SSH Server ο οποίος πρέπει να είναι up and running δέχεται connections απο χρήστες, τους οποίους
πρέπει να πιστοποιήσει ότι υπάρχουν πριν τους δώσει πρόσβαση.

Η πιστοποιήση μπορεί να γίνει με 2 τρόπους:

1) Με την γνωστή μέθοδο username/password,
2) Με την όχι τόσo γνωστή μέθοδο username/private key authentication, γνωστή και σαν πιστοποιήση δημόσιου κλειδιού (Public key authentication).

Και γιατί γράφεις private key αφου ονομάζεται public key?
Γιατί ο user πρέπει να έχει τοπικά στον Η/Υ του το private key, ώστε να γίνει match με το public key
που έχει αποθηκευμένο στον server που θέλει να συνδεθεί.

Και οι δυο περιπτώσεις απαιτούν να υπάρχει account στο μηχάνημα που θέλουμε να συνδεθούμε.

Πριν ξεκινήσουμε να δούμε πως σετάρουμε τον SSH Server σε κάθε μια περίπτωση ας δούμε ένα generic setting,
το sshd_config είναι το config file για τον server,το οποίο μπορεί να χρησιμοποιηθεί και στις 2 περιπτώσεις.

Tα comments δεν τα έβγαλα για να μπορείτε να συγκρίνετε με το δικό σας sshd_config, το οποίο βρίσκεται στο /etc/ssh/

Ότι γράφεται μέσα σε [] μπαίνει με την μορφή comment (#)

 

[SSH Server Generic Config]
 
 Port 2204 #Εδω ορίζουμε σε ποιά πόρτα θα ακούει ο ssh server. H default είναι η 22 και καλό είναι να την αλλάζετε
 #AddressFamily any
 
#Απο ποιά IP Address θα μπορεί να δέχεται connections. Αν αφήσουμε την 0.0.0.0 τότε θα δέχεται απο παντού!!!
 ListenAddress 0.0.0.0
 #ListenAddress ::
 
# Disable legacy (protocol version 1) support in the server for new
# installations. In future the default will change to require explicit
# activation of protocol 1
# Το protocol δεν ορίζει το tcp or udp αλλα σε τι πρωτόκολλο θα "μιλήσει"
# o server με τον client.
# To protocol 1 είναι πιο vulnerable (ευπαθές) και στην περίπτωση που χρησιμοποιούμε
# password authentication, με μια MiM attack ο attacker πήρε σε plain text το
# username & password!!!  Οπότε καλό είναι να υποστιρίζει μόνο το 2.
#Protocol 2,1
 Protocol 2
 
# HostKey for protocol version 1
 #HostKey /etc/ssh/ssh_host_key
 # HostKeys for protocol version 2
 #HostKey /etc/ssh/ssh_host_rsa_key
 #HostKey /etc/ssh/ssh_host_dsa_key
 
# Lifetime and size of ephemeral version 1 server key
 #KeyRegenerationInterval 1h
 #ServerKeyBits 1024
 
# Logging
 # obsoletes QuietMode and FascistLogging
 SyslogFacility AUTH
 LogLevel INFO
 
# Authentication:
 
 LoginGraceTime 2m #Πόσο θα περιμένει μέχρι να βγάλει "connection timeout"
 PermitRootLogin no #Αν θα επιτρέπεται στον root να κάνει login. Δεν συνιστάται.
 StrictModes yes
 MaxAuthTries 3 #Στις πόσες προσπάθειες τον κόβεις
 MaxSessions 2 #Πόσα ταυτόχρονα connections μπορείς να δεχτείς.
 
 
# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#RhostsRSAAuthentication no
# similar for protocol version 2
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for  
# RhostsRSAAuthentication and HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don'
t read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes      
# Kerberos options  
#KerberosAuthentication no  
#KerberosOrLocalPasswd yes  
#KerberosTicketCleanup yes
#KerberosGetAFSToken no  
# GSSAPI options  
#GSSAPIAuthentication no  
#GSSAPICleanupCredentials yes  
# Set this to '
yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will  
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,  
# PAM authentication via ChallengeResponseAuthentication may bypass  
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication  
# and ChallengeResponseAuthentication to '
no'.  UsePAM no  
#AllowAgentForwarding yes  
#AllowTcpForwarding yes  
#GatewayPorts no  
#X11Forwarding no

#Εδώ καλό είναι να μην το βάλουμε yes γιατί δίνουμε την δυνατότητα για MiM Attack  
#X11DisplayOffset 10  
#X11UseLocalhost yes  
#PrintMotd yes
#PrintLastLog yes  
#TCPKeepAlive yes
#UseLogin no  
#UsePrivilegeSeparation yes
#PermitUserEnvironment no  
#Compression delayed  
#ClientAliveInterval 0  
#ClientAliveCountMax 3
#UseDNS yes  
#PidFile /var/run/sshd.pid
#MaxStartups 10  
#PermitTunnel no  
#ChrootDirectory none  
# no default banner path  
#Banner none    
# override default of no subsystems  
#Αυτο πρέπει να μείνει ως έχειν αν θέλουμε να κάνουμε scp (secure copy)ή sftp (secure ftp)
Subsystem       sftp    /usr/lib/ssh/sftp-server    
# Example of overriding settings on a per-user basis
#Match User anoncvs
#       X11Forwarding no  
#       AllowTcpForwarding no
#       ForceCommand cvs server    [/END SSH Server Generic Config]
 

 Μέχρι στιγμής είδαμε ένα πολύ generic configuration για τον SSH Server.

 
Ας δούμε τι άλλο πρέπει να κάνουμε για να έχουμε Public Key Authentication
 

[SSH Public Key Authentication]
 # Για να έχουμε υποστίριξη για Public key authentication θα πρέπει να κάνουμε uncomment

 # (βγαζοντας την #) τις παρακάτω γραμμές

 RSAAuthentication yes
 PubkeyAuthentication yes
 AuthorizedKeysFile      .ssh/authorized_keys
 
#Το .ssh/authorized_keys μας λέει που θα πάει να βρεί το αρχείο authorized_keys το οποίο έχει όλη #την πληροφορια του public key.
 #Τα δικαιώματα που πρέπει να έχει ο φάκελος .ssh
 #drwx------ 2 gkapel gkapel 4096 Mar 10 14:44 .ssh/
 
#Τα δικαιώματα που πρέπει να έχoυν τα αρχεία
 #-rw------- 1 gkapel gkapel 1743 Feb 18 14:32 id_rsa <--Private key
 #-rw-r--r-- 1 gkapel gkapel  413 Feb 18 14:32 id_rsa.pub <--Public key
 #-rw------- 1 gkapel gkapel 381 Feb 26 16:49 authorized_keys <-- To αρχείο που περιέχει την πληροφορία του public key.
 #Αν για κάποιο λόγο δεν δώσουμε τα σωστά δικαιώματα τότε ΔΕΝ θα μπορέσουμε να κάνουμε connect.
 
#Για να είμαστε 100% σύγουροι ότι δεν θα ρωτήσει για password αντικαθιστούμε το yes με no όπως φαίνεται παρακάτω
 
# To disable tunneled clear text passwords, change to no here!
 PasswordAuthentication no
 PermitEmptyPasswords no
 
# Change to no to disable s/key passwords
 ChallengeResponseAuthentication no #ΠΡΟΣΟΧΗ Αν αυτο είναι yes και τα παραπάνω no τότε θα ζητήθει το password του user.
 
#To αποτέλεσμα θα είναι το παρακάτω αν προσπαθήσω να μπω στο PC του σπιτιού μου:
 # [[email protected] ~]$ ssh -p 2204 [email protected]-34464.home.otenet.gr
 # Enter passphrase for key '/home/gkapel/.ssh/id_rsa':
 
[/END SSH Public Key Authentication]
 
 

Περίπτωση 2η: Password Based Authentication
 

[SSH Password Based Authentication]
 
#Σε αυτή την περίπτωση κάνουμε το ακριβώς ανάποδο από ότι κάναμε στην περίπτωση 1.
 
#RSAAuthentication yes
 #PubkeyAuthentication yes
 #AuthorizedKeysFile      .ssh/authorized_keys
 
# To disable tunneled clear text passwords, change to no here!
 PasswordAuthentication yes
 PermitEmptyPasswords no
 
# Change to no to disable s/key passwords
 ChallengeResponseAuthentication yes
 
#Εδω καλό είναι να σταθούμε λίγο. Με το παρακάτω option λέμε ότι μόνο οι συγκεκριμένοι χρήστες
#θα μπορούν να συνδέονται με ssh. O ένας είναι ο slackware ο οποίος θα μπορεί να συνδεθεί μόνο
#απο την συγκεκριμένη IP "athedsl-34464.home.otenet.gr" (αν αλλάξει η IP αυτή τότε δεν θα μπορεί να συνδεεται),
#ο χρήστης slack ο οποίος είναι χρήστης τοπικού συστήματος.
#Κανένας άλλος δεν θα μπορεί ακόμη και αν έχει account. Η γραμμή αυτή μπαίνει στο τέλος του sshd_config.
 AllowUsers [email protected]-34464.home.otenet.gr slack
[/END SSH Password Based Authentication]
 

 
 

Εδώ βλέπουμε το πως ζητάει το password

[[email protected] ~]$ ssh -p 2204 [email protected]
[email protected]'s password:

Αν εχω κάνει κάπου λάθος ή έχω ξεχάσει κάτι πείτε μου το να το διορθώσω. (εξαιρουνται τα ορθογραφικα :p )

 

 

Tags
Δώσε αστέρια!
Σχόλια

Σωστόοοοοοοος !!!!!!

~~~~~~~~~~~~~~~

Αρχάριοι του forum ενωθείτε... βροντοφωνάξτε :

Συγνώμη...επειδή είμαι αρχάριος...πείτε πως θα το κάνω μεσα απο το γραφικό περιβάλλον ?

 

--

"the car's on fire and there's no driver at the wheel.
and the sewers are all muddied with a thousand lonely suicides.
and a dark wind blows."  GYBE

μπράβο ρε slack

...για να τα κάνουμε πράξη σε γνωστή εφαρμογή που κυκλοφορεί 

υπαρχει ο user mike-desktop?? αν οχι δεν προκειτε να συνδεθεις :---)

 

[[email protected]]$uname -a | awk '{print $1, "on the ROCKS"}' | sed -e 's/on\ the\ ROCKS/ROCKS/'

 

Βρε mixalis, μήπως τα έχεις βάλει ανάποδα;

Ο χρήστης είναι ο mikeee ενώ ο host είναι το mike-desktop...λογικά.

 

--ΔΚ

 

slackware]

υπαρχει ο user mike-desktop?? αν οχι δεν προκειτε να συνδεθεις :---)

 

[[email protected]]$uname -a | awk '{print $1, "on the ROCKS"}' | sed -e 's/on\ the\ ROCKS/ROCKS/'

 

Έχεις δίκιο είχα μπερδέψει τους user με τους hostname , ευχαριστώ!

To ένα είναι desktop το άλλο είναι το eee , όταν το eee το έχω με ενσύρματη σύνδεση στο router γίνετε κανονικά η σύνδεση με ssh όταν όμως το έχω ασύρματο μου δίνει " ssh: connect to host mikeee port 2222: No route to host " όμως όχι πάντα ,πρέπει να βάλω κάτι στο BaudTec ? Την ip του την έχω σταθερή και στη μια περίπτωση και στην άλλη.

το error σου συμαινει οτι δεν βρισκει τον ssh server για να συνδεθει... που τον εχεις εγκατεστημενο?

 

[[email protected]]$uname -a | awk '{print $1, "on the ROCKS"}' | sed -e 's/on\ the\ ROCKS/ROCKS/'

 

Και στα δύο μηχανήματα, πειράζει? έτσι τα είχα πάντα. Τώρα μου δίνει error και με sftp και με smb ?

mixalis]

Και στα δύο μηχανήματα, πειράζει? έτσι τα είχα πάντα. Τώρα μου δίνει error και με sftp και με smb ?

Με μια επανεκκίνηση του eee δούλεψαν όλα !!!!