SSH

Da Skypedia.
Ssh.jpg
SSH sta per Secure Shell ed è un protocollo che permette di stabilire una sessione remota interagendo con un’altra macchina e permettendo l’esecuzione di comandi. SSH opera in maniera analoga ad altri protocolli quali telnet, ma con l’importante differenza che l’intera comunicazione così come l’invio di password avviene in maniera crittata. SSH ha un interfaccia a solo testo e per questo non può rappresentare un’alternativa all’utilizzo di VNC.

L’implementazione SSH in ambiente GNU/Linux prende il nome di OpenSSH e la sua installazione sotto Debian si limita ad un semplice:

# apt-get install openssh-client openssh-server


Utilizzo

Per accedere da remoto ad una macchina via SSH basterà dare il seguente comando:

$ ssh <utente>@<host>

Se volessi accedere ad una macchina su una rete LAN e il mio nome utente su quella macchina fosse skydiamond dovrei semplicemente digitare:

$ ssh skydiamond@192.168.0.10

Dove 192.168.0.10 sarà l'indirizzo della macchina remota alla quale mi voglio connettere.

Sicurezza

Se volessimo bloccare l'accesso all'utente root via SSH ed evitare così grosse falle di sicurezza potremmo andare a modificare il file /etc/ssh/sshd_config aggiungendo la riga:

PermitRootLogin no

poi potremmo anche modificare la porta sulla quale SSH rimane in ascolto andando a modificare la riga della porta e inserendo una porta casuale (quella di default per SSH è la 22) , che magari possiamo anche tracciare dal nostro router/firewall. Ciò è utile soprattutto quando il PC è connesso ad una MAN o tramite un access point wireless.

Port 55522

Qui [1] potete trovare una lista completa di porte standard e di porte private. I numeri di porta dell'intervallo 49152-65535 appartengono a porte private o dinamiche e non sono utilizzati da un'applicazione in particolare. Potremmo anche decidere di dare i privilegi d'accesso per SSH ad un particolare utente del sistema per farlo inseriamo la riga:

AllowUsers nomeutente

Per maggiori informazioni sul server ssh vi invito a dare un bel

$ man sshd

Semplificare i collegamenti SSH

Quando ci si collega a un server remoto la forma usuale del comando è ssh user@server. Questo si può semplificare modificando il file ~/.ssh/config. Nel caso in cui volessimo semplificare un host specifico per collegarci praticamente in automatico basterà utilizzare una configurazione di questo tipo:

Host nomehost //(nomehost è il nomignolo che vogliamo usare per nostro host remoto)//
Hostname fully.qualified.domain //(il vero indirizzo dell'host)//
User username //(il nome utente corrispondente all'account nell'host remoto)//

Fatto ciò potremo lanciare la connessione scrivendo semplicemente con il comando:

ssh nomehost

Abilitare il forwarding del server X tramite SSH

Abilitando il forwarding del server X sulla macchina che richiede la connessione sicura SSH si può avere il controllo di un programma grafico direttamente sulla macchina che effettua la richiesta. Se, ad esempio, la macchina host A instaura una connessione verso la macchina con SSH server B all'indirizzo 192.168.0.30 includendo l'opzione -X per il forwarding in questo modo:

ssh -X user@192.168.0.30
Ssh X Forwarding.gif
l'utente sulla macchina A avrà accesso non solo alla shell ma anche ai programmi con interfaccia grafica. In tal modo, una volta aperta la connessione, potremo anche aprire gVim, al posto del testuale Vim. L'accesso al programma sarà sicuramente più lento ma potremo comunque usufruire di programmi per la video scrittura o l'editing che ci consentano di utilizzare il server X per avere una più semplice gestione della macchina remota.

Se siamo su una rete cablata come una Gigabit Ethernet il problema non si pone neanche e potremmo facilmente riuscire a gestire un sistema multiaccount tramite un singolo computer desktop multiprocessore come un QuadCore, ormai facilmente accessibile anche con più di 4 GB di memoria RAM. In questo modo possiamo avere dei thin client, magari dotati di CPU Atom che ci consentiranno di instaurare la connessione e avere il nostro server X funzionante (magari anche con Fluxbox piuttosto che con uno Gnome o KDE), richiedendo poi programmi esosi in termini di risorse tramite SSH.

Dalla pagina del man SSH:

X11 and TCP forwarding

    If the ForwardX11 variable is set to "yes" (or see the description of
    the -X and -x options described later) and the user is using X11 (the
    DISPLAY environment variable is set), the connection to the X11 display
    is automatically forwarded to the remote side in such a way that any X11
    programs started from the shell (or command) will go through the
    encrypted channel, and the connection to the real X server will be made
    from the local machine.  The user should not manually set DISPLAY.  For-
    warding of X11 connections can be configured on the command line or in
    configuration files.
    The DISPLAY value set by ssh will point to the server machine, but with a
    display number greater than zero.	This is normal, and happens because
    ssh creates a ``proxy X server on the server machine for forwarding the
    connections over the encrypted channel.
    ssh will also automatically set up Xauthority data on the server machine.
    For this purpose, it will generate a random authorization cookie, store
    it in Xauthority on the server, and verify that any forwarded connections
    carry this cookie and replace it by the real cookie when the connection
    is opened.  The real authentication cookie is never sent to the server
    machine (and no cookies are sent in the plain).

L'autorizzazione all'utilizzo del server X in forwarding sulla macchina client viene settata sul filme ~/.Xauthority. Se vi fossero problemi con quest'ultimo potreste, in extrema ratio, cancellarlo e riprovare a connettervi con l'opzione -X. SSH provvederebbe a ricreare questo file di autorizzazione e ad inserirvi il cookie necessario.

Stop SSH

Se si vuole stoppare il server SSH init.d o service non servono allo scopo. Bisogna andare a modificare /etc/init.d/ssh.conf e commentare la linea respawn, poi ucciderlo con una kill.

Per riabilitare ssh all'avvio basterà decommentare la linea respawn.

Risorse