Consulenze presso Eunet srl, via dell'Artigianato 15, 09122 Cagliari 070 753609 Lun - Ven 08:30-13:00 / 14.30-17.00

SSH chiave pubblica, chiave privata e binding

La mille funzioni di SSH: ne riporto alcune meno pubblicizzate, ma molto comode. Supponiamo di avere un computer in azienda dove vogliamo collegarci. L'azienda è protetta da firewall, noi vorremmo collegarci a questo computer senza modificare niente sul firewall. Inoltre vorremmo collegarci in maniera veloce senza dover ricordare molti indirizzi o password. Vediamo quali passi dobbiamo compiere per raggiungere questo risultato.

Prerequisiti:

  • Due computer aventi linux , oppure windows con i programmi necessari installati (es:openSSH e\o cygwin o analoghi.)
  • La porta SSH dell'host deve essere raggiungibile dall'esterno. Quindi in questo caso almeno una regola sul firewall è necessaria.
  • Il demone SSHD dell'host deve avere queste configurazioni abilitate nel file sshd_config
nano /etc/ssh/sshd_config    (editiamo il file di configurazione di SSH)

HostbasedAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes

Come primo passo, rendiamo possibile il collegamento senza dover digitare user e password.

Creiamo la chiave asimmetrica per la cifratura

ssh-keygen -t dsa -b 1024

 l'opzione "-t" indica il il tipo di chiave,nel nostro caso dsa. "-b" indica la lunghezza.

durante la creazione della chiave sceglieremo il nome e se utilizzare una passphrase per aumentarne il livello di sicurezza. Se lasciamo il campo vuoto non verrà richiesta. Per comodità non la utilizzo.

1-ls-ssh

i due file di colore verde sono le chiavi generate. Una chiave privata "portatile" ed una chiave pubblica "portatile.pub"

adesso con 'utility di SSH copiamo la nostra chiave pubblica sul computer remoto, quello dove vogliamo collegarci senza utilizzare utente e password.

ssh-copy-id -i ~/.ssh/id_dsa.pub  utente@host-remoto
es:

ssh-copy-id -i /home/mazzantil/.ssh/portatile.pub root@host_remoto.it

2-ssh-copy-id-r
 

visualiziamo la nostra chiave pubblica vedremo questo:

3-aut-port

 adesso visualizziamo il file authorized_keys dell'host remoto.

4-remoto-aut

Vediamo solo le righe sottolineate in verde. Vediamo che la prima figura indica la  chiave in locale portatile.pub vedrete una marea di numeri e lettere che terminano con "+jkQ==" . Nella seconda immagine "chiavi di autorizzazione" del server remoto è presente la nostra chiave portatile.pub infatti le utlime cifre sono "+jkQ==". In altre parole quando il nostro portatile si presenta all'host remoto gli fornisce la nostra chiave pubblica, l'host la verifica con quelle autorizzate che ha nel file "authorized_keys" ed iniziano una connessione cifrata con chiave asimetrica portatile.pub e portatile. Il file portatile è la nostra chiave privata ,quindi è la sua riservatezza è importante come la password nell'autenticazione standard.

Eseguiamo queste operazioni per tutti gli host a cui vogliamo connetterci.

Adesso entriamo nella cartella ssh del nostro utente /home/utente/.ssh
creiamo un file config ed inseriamoci i dati per raggiungere l'host remoto.

 

mazzantil@mazzantil-laptop ~ $ cd /home/utente/.ssh/
mazzantil@mazzantil-laptop ~ $ touch config
mazzantil@mazzantil-laptop ~ $ nano config

Host "nome_nostro_host"
    HostName "host_remoto"
    Port "port_ssh"
    User root
es:
Host 80.80.80.80
HostName pippo
Port 222
User paperino


adesso basterà digitare ssh "nome_nostro_host" (ssh pippo) e ci collegheremo all'host_remoto senza necessità di inserire altro.

3-login

Consiglio:

se non volete permettere il login tramite password, ma solo attraverso public key, settate anche nel file sshd_config le opzioni:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no

Da non usare se avete utilizzato una passphrase nella generazione della chiave.
A questo punto basterà digitare ssh nome_host e ci collegheremo all'host remoto senza inserire user e sopratutto senza la necessità di inserire la password grazie alla chiave pubblica!!

se adesso alla stringa sopra riportata aggiungo un comando, questo verrà eseguito direttamente:

ssh host_remoto tail /var/log/syslog

Quindi nel mio terminale locale, vedrò l'output del server remoto.

Fino a questo punto ci siamo collegati al nostro host remoto evitando di digitare indirizzo ,untente e passwrod.

A questo punto oltre all' host remoto vogliamo collegarci anche in terminal server ad un client della rete, senza modificare niente sul firewall e utilizzando un tunnel SSH.

ssh -L 3390:192.168.0.10:3390 host_remoto 
il comando completo sarebbe
ssh -L porta_locale:indirizzo_remoto:porta_destinazione Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.
  •     L'opzione -L sta ad indicare che vogliamo creare un binding SSH
  •     La porta 3389 è la porta alla quale ci dovremo connettere in locale, per raggiungere il nostro servizio remoto (nel nostro caso sarà: localhost:3390)
  •     indirizzo_remoto.com è il nome del server al quale non avremmo avuto accesso senza il tunnel
  •     80 è la porta del servizio remoto al quale non ci potevamo connettere
  •     utente è il nome di un utente che ha accesso sul server SSH remoto
  •     serversshremoto.com è l'indirizzo del server SSH remoto

Fatto questo se apriamo la console RDP per aprire il desktop remoto basterà inserire nell'indirizzo localhost:3390

rdp

tunnel ssh

Ovviamente non ci sono limiti a questa applicazione, dobbiamo solamente fare attenzione alle porte e indirizzi che scegliamo.

Un'altro esempio di applicazione.

Vogliamo collegarci all'interfaccia web del nostro access point in ufficio, ma siamo in un'altra sede. Supponiamo di non avere una vpn.

il nostro access point ha indirizzo 192.168.0.15 ed ha la console su interfaccia http standard. La sede ha ip pubblico 80.80.80.80 e l'accesso SSH è sulla porta 222 dal nostro portatile apriamo ssh e digitiamo

ssh -L 81:192.168.0.15:80 -p222 Questo indirizzo email è protetto dagli spambots. È necessario abilitare JavaScript per vederlo.

provo a tradurre il comando:

ssh utilizza il tunnel -L redirigi la porta 81 dal mio portatile verso la porta 80 dell'indirizzo ip 192.168.0.15 passando dal cananle ssh creato con 80.80.80.80

Adesso se apriamo il browser del vostro computer e digitiamo http://localhost:81 vedremo l'interfaccia dell'access point della sede remota.

 Se il nostro client locale è windows non abbiamo ssh, quindi possiamo scaricare putty ed inserire le configurazioni come sotto:

nel nostro esempio source port 81 destination 192.168.0.15:80 e premiamo add.

putty tunnels page a

 

(0 Votes)