Vi è mai capitato di aver lasciato il computer di casa acceso, volete spegnerlo, ma non potete perchè ormai siete lontani da casa?

Beh… Ora puoi farlo grazie a Secure SHell (SSH)!

Che cos’è SecureSHell?

Secure Shell è un protocollo che serve per far interagire due computer tra di loro, usato per accedere a una shell (testuale) remota o locale del PC che desideriamo “spegnere”, come nel caso descritto prima.

E’ sicura?

Utilizza una connessione criptata per le comunicazioni tra i due dispositivi.

E’ possibile trasferire files?

Si, con server SFTP, ad esempio. (Lo vedremo sicuramente in un altro articolo.)

OpenSSH e SSH… Cosa cambia?
SSH è sviluppata dall’azienda che ha sviluppato il protocollo, ed è un programma closed source, OpenSSH è un programma open source che sfrutta il protocollo SSH

In molti confondono OpenSSH e OpenSSL…Giusto o sbagliato?

Sbagliato. Nonostante i nomi siano moltissimo simili, hanno scopi diversi (SSL è il protocollo di sicurezza utilizzato per i siti web ad esempio (https) [vedi Facebook, usa una connessione criptata per "camuffare” i dati di login e non che transitano in una rete (Intercepter-NG per Android, WireShark o altri sniffer non saranno in grado di rilevare le password… O vengono restituite sotto forma di algoritmo MD5)], ma l’obiettivo dei due progetti è lo stesso: fornire software open source, e magari un supporto migliore.

Cominciamo con la guida

1) Cosa serve

OpenSSH per GNU/Linux:

Distribuzioni Debian-based

 # apt-get install openssh

Distribuzioni Red Hat-based

 # yum install openssh

Distribuzioni Arch Linux-based

 # pacman -S openssh

JuiceSSH per dispositivi Android:

Play Store | JuiceSSH – SSH Client for Android

2) Configuriamo OpenSSH

In questa guida verrà utilizzato Arch Linux, verranno mostrati i comandi da utilizzati per altre distribuzioni

ssh_config_verify

Verifichiamo che le configurazioni /etc/ssh/ssh_config e /etc/ssh/sshd_config siano presenti con il comando

 # nano /etc/ssh/ssh_config

e

 # nano /etc/ssh/sshd_config

consiglio di aggiungere le righe AllowUser nome_utente e PermitRootLogin valore (yes o no) per impostare gli utenti che potranno accedere da remoto e se l’utente root potrà accedervi in remoto (scelta non consigliata, ma non potrete eseguire operazioni amministrative )

3) Impostiamo OpenSSH (sshd) per essere avviato all’accensione del PC
per distribuzioni che utilizzano Systemd come “gestore di sistema”, poi riavviamo:

 # systemctl enable sshd
 # reboot

ora sshd (il gestore delle connessioni e richieste per ssh) è configurato e pronto all’utilizzo!

per riavviare/interrompere/avviare il daemon ssh è sufficiente eseguire

 # systemctl (restart/stop/start) sshd

oppure

 # service sshd (start/stop/restart)

Maggiori info: Wiki ArchLinux – OpenSSH
Ora avete due opzioni
1) Vi connettete al vostro PC da remoto/locale con una shell testuale di un PC GNU/Linux con la sintassi:

 ssh indirizzo_locale

(vedremo dopo come fare per collegarci in remoto )

oppure, sempre da Computer, utilizzare un altro tool, magari GUI (anche per Windows)
2) Utilizzare JuiceSSH per il vostro dispositivo Android

      •     Dal menù principalejuicessh_mainmenuSelezioniamo “Connections
      • Premiamo sul + in basso per aggiungere un server e compiliamo i parametriconnections_menu_juicesshNota: da questa activity è possibile aggiungere server, gestirli e connettere a questi. E’ inoltre possibile definire delle identità che vedremo in seguito, per il port forwarding: serve JuiceSSH pro

        juicessh_new_connectionQui è possibile inserire un nome per la connessione, il tipo e l’ indirizzo IP, l’identità ( è possibile configurarne una nuova o utilizzare una delle presenti nel database), la porta (che è la 22), poi è sufficiente premere il tick in alto a destra per completare.

         

        • dal menù delle connessioni, cliccare su quella appena configurata per connettervi al server (o al vostro PC)
          connecting_shell
        • Eseguite comandi sulla shell remota dal terminale JuiceSSHshellcome vedremo, il prompt, il profilo Bash sono identici a quelli del computer (basta confrontarli con il terminale GNOME o XTerm)

         

        Identità

        Le identità servono a definire l’utente con cui loggarsi nei server(comodo per non scrivere sempre la password), è possibile gestirle dal tab vicino a Connections nella activity del primo elemento nel menù principale “Connections”

        users_juicessh è sufficiente cliccare + per aggiungerne un altra, cliccate sull’identità corrente per modificarla

        update_user_identityè possibile anche aggiungere dei plugins, quello che ho trovato più utile è performance monitor, e si scarica aprendo”plugins” dal menù principale, ce ne sono molte altre…

        plugins_activity_juicesshplugin_monitor_juicesshquesto è il plugin performance-monitor che come si intuisce dal nome, ci mostra l’usage del PC connesso tramite SSH. Per aprirlo è sufficiente andare nel menù plugins e tappare “open” in performance monitor. Per mostrare l’attività del nostro computer basta eseguire “Connect” in basso e attendere che la connessione tramite SSH avvenga. In alto, nella action bar c’è uno spinner (menù a tendina) che ci mostra i server memorizzati nel nostro database.

        Per avviare una connessione SSH remota, non in locale, cioè nella stessa rete, è necessario avere

        • Il nostro IP WAN (IP Esterno)
        • l’IP locale del PC nel quale è in esecuzione SSH e SSHD
        • Accedere al menù di configurazione del nostro router

        per ottenere il nostro IP Esterno, andiamo nel sito TraceMyIp e scriviamocelo da qualche parte, (nota: se l’indirizzo IP non è statico, questo cambierà quindi la connessione dovrà essere reimpostata), dal menù del nostro router (accessibile dal browser attraverso l’indirizzo IP del router (di solito 192.168.1.1 o 192.168.1.0 o 192.168.0.1), accedere ai dispositivi connessi, dovrebbe essere mostrato l’hostname del PC, scriviamo anche quell’IP (locale) (di solito 192.168.1.x o 192.168.x.y). Poi cerchiamo voci quali “Server virtuale o virtual server” o “Port forwarding”, bene ora è necessario scrivere l’IP locale della macchina, inserire la porta 22, protocollo TCP per l’esterno e l’interno.

        Ora, in JuiceSSH o un client SSH (remoto) sarà necessario scrivere l’IP esterno della nostra rete per connetterci al server(cioè il nostro PC).