giovedì 20 gennaio 2011

Accesso remoto a un computer, con ssh

Con ssh è possibile collegare in rete due PC e risolvere i problemi relativi alla sicurezza accennati qui. Vi ricordo, infatti, che la connessione stabilita fra due PC attraverso telnet avviene senza nessuna codifica. E' quindi possibile intercettare con uno sniffer di rete i pacchetti trasmessi e leggerli in tutta tranquillità. Tutto quello che avviene attraverso ssh viene codificato o criptato. In questo modo i pacchetti intercettati non saranno leggibili poiché privi di significato! Per effettuare una connessione a un PC remoto attraverso ssh occorre installare sshd, che offre il servizio al protocollo ssh. L'installazione del server e del client avviene con il comando sudo apt-get install openssh-client openssh-server. Su alcune distribuzioni (ad esempio in Xubuntu 10.04, qui usata su due PC: il mio Aspire One 110L e un PC) è presente il comando ssh che tuttavia non permette la creazione di connessioni poiché il relativo servizio sshd non è installato di default (la connessione viene continuamente rifiutata, connection refused). Consiglio, pertanto, l'installazione di openssh (parte client e server) attraverso i comandi detti sopra.
La connessione al PC può avvenire solo se disponiamo di un account presso l'host remoto, occorre indicare al comando il nome utente e l'indirizzo IP dell'host remoto in questo modo: ssh username@ip. Se fra i due computer è possibile instaurare una connessione il comando chiederà all'utente remoto la password associata al nome utente. In caso contrario vi consiglio di verificare la visibilità fra i due host, ad esempio usando il comando ping oppure traceroute.
La connessione remota si svolge sulla porta 22, usata di default. Questo valore può essere modificato accedendo (in scrittura) al file /etc/ssh/ssh_config (usato ad esempio dal server, durante la fase di avvio del servizio) oppure passando al comando l'opzione -p porta (usato ad esempio dal client per direzionare altrove la connessione). E' ovvio che il numero di porta usato dal client deve coincidere con quello usato dal server. Provate a scrivere il comando man ssh_config per accedere alla pagina del manuale dedicata al setup di ssh. Alcune impostazioni riportate nel file sono disabilitate attraverso il carattere #, che commenta quindi l'intera riga. Vi elenco le impostazioni abilitate nel file ssh_config presente sul mio PC:
  • ForwardX11 yes: specifica se le connessioni X11 devono avvenire su un canale sicuro;
  • Port 22: specifica la porta per la connessione remota;
  • Protocol 2,1: indica, in base all'ordine di preferenza, le versioni dei protocolli ssh da utilizzare;
  • SendEnv LANG LC_*: indica le variabili locali da inviare all'host remoto;
  • HashKnownHost yes: indica ad ssh di stabilire una connessione solo con gli host remoti presenti nel file know_host. Attenzione, durante la prima connessione ssh cerca di fissare l'autenticità dell'host remoto attraverso la creazione di una chiave RSA che verrà creata e conservata in un file di configurazione (in /home/user_name/.ssh/known_host, dove user è il nome dell'utente). Pertanto, se formattate uno dei due PC è preferibile rivedere il contenuto del file e cancellare la riga con la chiave dell'host remoto appena formattato. Purtroppo non riusciremo a fare tutto questo, se usiamo ssh verso più host di rete saranno presenti più voci. L'informazione nel file è infatti criptata ed è impossibile individuare la sola riga che fa riferimento al vecchio host remoto. Disabilitando questa voce (usate in tal caso il valore no) riusciremo invece a riconoscere i riferimenti verso gli host remoti (sarà possibile leggerne gli indirizzi IP e orientarsi all'interno del file);
  • GSSAPIAuthentication yes: abilita l'autenticazione GSSAPI (generic security service application program interface), si tratta di un'interfaccia per programmi che accedono a servizi di sicurezza;
  • GSSAPIDelegateCredentials yes: affida la gestione della sicurezza, attraverso l'interfaccia abilitata al punto precedente, al server (l'host remoto);
Dopo la fase di login possiamo far eseguire un comando all'host remoto solo se l'account che stiamo usando è dotato dei permessi necessari. Se tutto è andato per il verso giusto provate ad esempio ad aprire il gestore di file in una cartella di sistema. Qui potete vedere il contenuto di una cartella presente nel file system del mio PC:


Qui, invece, potete vedere la stessa cartella vista dal mio Aspire One 110L, dopo aver fatto l'accesso remoto attraverso il comando ssh:

4 commenti:

  1. Salve, ma se volessi connettermi con un pc da una determinata rete "rete1" ad un gruppo di computer su una rete "rete2" come dovrei fare?
    Io ho provato ad impostare l'indirizzo ip del router a cui sono collegati i pc della "rete2", fisso. Dal pc sulla "rete1" ho digitato (da una shell):
    ssh XXXX.XXXX.XXXX.XXXX <-----IP del router
    e così facendo ho visto che si connette alla rete2 e precisamente a uno dei pc della rete2.
    La mia domanda è, come faccio a specificare a quale pc della rete2 devo connettermi? Si collega ad uno a caso ma io vorrei poterlo fare con tutti i pc.

    PC_a (rete1) -------> PC-1 - PC-2 - PC-3 - PC-4 .... etc

    Io dal PC_a (master) della "rete1" voglio connettermi con ssh al PC-1,PC-2,PC-3 etc della "rete2" saperndo che l'indirizzo del router a cui sono collegati i PC della "rete2" ha un determinato indirizzoXXXX-XXXX-XXX-XXX.

    Spero di essere stato chiaro :-)

    Grazie!

    RispondiElimina
  2. provate questo http://www.ammyy.com

    Ammyy Admin ti consente di controllare da remoto un altro computer. Punta alla facilità d'uso, non necessita di particolari configurazioni ma si limita solo allo stretto indispensabile.

    Ammyy Admin fa della semplicità la sua arma migliore. La sua interfaccia è volutamente minimalista. Ammyy Admin rimane comunque utile se sei alla ricerca di un programma di controllo remoto molto facile da usare e che non ti dia nessuna noia per la configurazione di porte, firewall e quant'altro.

    RispondiElimina
  3. Per accedere in remoto a uno dei PC dovresti eseguire il comando "ssh username@ip", con username pari alla login dell'utente ed ip pari all'indirizzo ip del PC in remoto.

    RispondiElimina
  4. Questo l'ho fatto, ma così si può accedere a un PC della stessa sottorete. Ti faccio un esempio pratico:
    ho una rete in un ufficio a Roma, con 10 PC collegati e una rete con 10 PC a Milano. Io voglio accedere da un PC della rete di Roma a un PC della rete di Milano. E conosco gli indirizzi dei due router che collegano le rispettive sottoreti.
    Non so se mi sono spiegato.
    Io da casa mia voglio collegarmi a uno dei tre PC che sono a casa del mio amico, ho l'indirizzo del suo router e l'indirizzo del pc della sua sottorete ma non so come accedervi. Se do il seguente comando:
    ssh xxxx.xxxx.xxxx.xxxx
    cioè ssh IP del router di casa sua riesco a connettermi ma a un PC a caso, e non posso decidere a quale dei 3 connettermi!

    RispondiElimina