Ssh è un’ottima tecnologia per connettersi al proprio computer da internet e controllarlo completamente in modalità testuale, e volendo, anche grafica. È una tecnologia abbastanza semplice da usare grazie ai vari strumenti in circolazione, ed è anche sicura perché usa dei metodi di crittografia per proteggere i dati.
Nonostante sia stata portata anche verso altri sistemi, su Linux essendo di per sé nativa è molto più integrata e spesso semplice da installare, configurare ed utilizzare.
Per prima cosa vediamo come installare un server ssh sul nostro pingue computer. ![]()
Come mio solito utilizzerò le istruzioni per Ubuntu. Il sistema dovrebbe disporre già del client ssh, ovvero il software per connettersi ad altri computer che usano questo protocollo, ma non il server. Per installarlo basta il classico:
sudo aptitude install ssh-server
A questo punto è bene disabilitare l’accesso di root da ssh, in questo modo si impedisce a dei software malevoli di individuarne la password e fare danni. Per fare ciò modificate il file di configurazione:
sudo gedit /etc/ssh/sshd_config
E alla riga PermitRootLogin sostituite yes con no. Riavviate il demone ssh:
sudo /etc/init.d/ssh restart
Ora dovrebbe essere tutto funzionante.
Se utilizzate un router permettete le connessioni alla porta 22 in ingresso, altrimenti il firewall bloccherà tutto. Vi consiglio anche di permettere le connessioni in ingresso alla porta 115, se volete avere la possibilità di trasferire file.
Per provare il funzionamento del tutto, per prima cosa aprite un terminale e date il comando:
ssh localhost
Se vi chiede username e password allora funziona. In questo modo siete entrati nel vostro stesso pc. Non serve a nulla ma è comodo per provare. ![]()
Ovviamente potete usare il comando exit per uscire. A questo punto provate anche il trasferimento dei file. Aprite Risorse > Connetti al server e come tipo di servizio scegliete SSH. Immettete il solito indirizzo del server localhost e come nome utente quello del vostro account Linux.
A questo punto sulla Scrivania avrete la cartella indicante la connessione di rete. Quando vi verrà chiesta, inserite la password. Ed ecco a voi, i vostri file! Anche questa volta non serve a tanto, ma è per verificare che funziona. ![]()
![]()
La comodità che fa tendenza
Ora avrete bisogno di un indirizzo per ricordare semplicemente il vostro computer. Se avete un ip fisso (caso raro) potete anche impararlo a memoria, ma se avete un ip variabile (caso molto frequente) allora è il caso di ricorrere a Dyndns. Se avete un modem seguite le istruzioni che avevo già pubblicato, se invece avete un router cercate di usare la sua funzionalità integrata a riguardo, se ce l’ha, per gestire Dyndns. Altrimenti usate le stesse istruzioni del modem.
Tanto per farvi un esempio io ho scelto lazza.homelinux.com… è terribilmente chic! ![]()
Adesso avete capito perfettamente come fare per gestire il vostro computer in remoto. Lasciatelo acceso e connesso, andate su un altro computer con Linux connesso ad internet ed usate le istruzioni precedenti per vedere i file o dare comandi via terminale. Per ssh da terminale vi consiglio l’opzione -X che vi permette di avviare applicazioni grafiche. ![]()
Questo se volete, è già di per sé alquanto utile, interessante e divertente.
Ma ovviamente la parte migliore deve ancora arrivare! Infatti, noi siamo pinguini, perciò dobbiamo farci vedere ai nostri conoscenti che usano Windows… ih ih ih. ![]()
Ok, sono una serpe, però ho provato di persona la cosa mostrando ad un mio amico come dal suo computer io potessi accedere ai miei file.
Non vi dico la faccia che ha fatto.
Passiamo al pratico. ![]()
Per quanto riguarda l’accesso via terminale, abbiamo a disposizione uno strumento eccellente che si chiama Putty. Un’immagine vale più di mille parole, e lascio a voi giudicare:

Dove c’è console c’è casa
Ovviamente il software possiede anche una interfaccia iniziale abbastanza semplice da usare, abbastanza analoga quella della connessione al server di Ubuntu:

Più semplice di così…
Connettetevi e mostrate le vostre prodezze con la shell.
Per quanto riguarda i file, scordatevi l’integrazione che vi offrono gli ambienti desktop su Linux, ma accontentatevi di WinSCP:

Non è male dopotutto
Chiaramente, al di là del fatto di vantarsi con gli amici, può tornare molto utile il fatto di controllare programmi e file da remoto anche quando ci si trova in “territorio nemico”.
Ma la sapete la cosa divertente? Per provare e recensire questi programmi non ho assolutamente usato Windows. Mi è bastato il buon Wine.


















Non ti conviene utilizzare la porta di default. Meglio utilizzarne una random non occupata da altri servizi
io conisglio di installare denyhost, la descrizione del pacchetto deb spiega tutto; in due parole se qualcuno tenta di indovinare la password e l’utente con molteplici connessioni il prog lo mette in blacklist temporanea
@ haga#41, sì può essere un’idea.
@ davide, lo installo subito!
ebbravo lazza ^^
tutorial salvato
Bel tutorial…
…ora ne servirebbe uno un po’ piu’ prolisso su Dyndns…
LuCa
Anche tu del club SSH? Benvenuto!
Concordo con Haga#41 sulla porta: la 22 è meglio evitarla…
@ blood, grazie.

Mi ha già bloccato 4 ip…
@ LuCa, sto lavorando per voi.
@ Luca, ho messo denyhosts quindi sto tranquillo.
cambiare la porta é come disegnare una porta sul muro per evitare che i ladri entrino…
certo, quelli tontoloni daranno due tre spallate al muro e poi vanno, ma quelli che vogliono entrare guardano anche altrove…
nmap sa fare miracoli.
se si vuole evitare un intrusione via ssh si passa all’autentificazione via chiave privata/pubblica e si disattiva la password.
cmq denyhost fa già abbastanza contro i lamer e gli script kid.
leggendo un articolo abbastanza interessante mi sono accorto dell’esistenza di dropbear, un rimpiazzo piccoletto per ssh… forse a qualcuno può interessare.
Lazza scusa se non è il posto giusto per fare questo commento, ma volevo sapere come hai fatto a inserire quell’immagine in alto a sinistra del tuo blog.
E’ con la scritta “un post a casa”, se me lo spiegassi in poche parole mi faresti un gran favore.
Bye
@ davide, a me non tanto ma magari a qualcun altro sì.
@ Cristian, vabbé… per stavolta… http://nicopi.wordpress.com/2007/08/29/badge-sui-blog-wordpresscom/
ottimo tutorial grazie
io avrei una curiosità…
… se abilito – come ho fatto in effetti – l’accesso chiave pubblica/privata + password, ottengo una protezione comunque MAGGIORE della sola chiave pubblica/privata, no?
sembra banale, ma pur avendo capito i 2000 segreti di ssh mi sfugge il metodo che unisce i due tipi di accesso.
– sicurezza estrema –
come aggiunta maniacale, ho creato un utente che NON ha privilegi di sorta. io entro con questo UTENTE via ssh e questo è l’unico utente abilitato ad autenticarsi in ssh. da quell’utente faccio un “su – mioutente” e da li posso usare SUDO.
secondo me questo aggrava con un bel problema la vita di un eventuale “personaggio che non ha di meglio da fare che cercare di accedere al mio pc”!
ho inoltre forzato l’utilizzo del protocollo SSH2.
un pochino di opzioni per i curiosi?
ok…
DA /etc/ssh/sshd_config:
AllowUsers mio_utente_non_privilegiato # Per intenderci un utente creato come USER
Port 666 #un numero di porta libera sul vostro pc (non tra queste )
Protocol 2
PermitRootLogin no #yes
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
PasswordAuthentication no
UsePAM no #yes
Tutto qua in quando un utente non privilegiato non può usare SUDO causa “AllowUsers” in “/etc/ssh/sshd_conf” e quindi il mio utente abilitato all’accesso ssh non potrà ottenere accesso amministrativo (ne leggere i file di root) a meno di aver ottenuto ANCHE l’accesso al mio utente di sistema standard (quello che uso per la sessione grafica, tipicamente l’uid 1000 su debian-like-gnu/linux-systems.
In pratica ho una quadrupla autenticazione: chi volesse accedere dovrebbe conoscere la porta sulla quale faccio girare ssh, avere la mia chiave, conoscere la password dell’utente dedicato ad ssh, conoscere la password del mio utente di sistema.
Lazza è stato meno prolisso e più chiaro di me, ma magari qualcuno può trarre spunto.
ciao
ho usato winSCP: fantastico.
grazie della dritta… era un po che non usavo windows!
PS – chiaramente la password nell’esempio di prima è la passphrase della chiave privata!
@franganghi: allora, é chiaro che password + chiave non aumenta la sicurezza, in quanto dai due modi per loggarsi sulla macchina, e come sai, se ti trovi davanti una finestra non rinforzata e una porta blindata con dobermann tenterai di entrare dalla finestra.
La sicurezza l’ottieni con l’auth via coppia di chiavi e disabilitando l’auth via password.
riguardo la porta mascherata non cambia molto, con nmap puoi sapere esattamente quali sistemi girano su una determinata macchina, e riesci a scoprire anche altre cosette, tipo la versione del kernel
L’idea dell’utente povero e castrato attraverso cui loggarsi per poi salire puo’ essere un’idea, ma a quel punto dagli una shell limitata e impediscili l’accesso a compilatori et similia… solitamente una volta entrati in un sistema si tenta di scalare i diritti con exploit e bug, non indovinando le password…
ultima cosa: la chiave é spesso più che abbastanza. il sistema di auth basato su chiavi rende impossibile un accesso senza possedere la chiave privata, e indovinarla beh, é assurdamente improbabile.
(ti consiglio la lettura del debian security book, ci sono ottimi spunti se ti interessa questo campo)
@ franganghi, e io che pensavo di essere paranoico.
grazie, mi è servita la parte di ez-ipupdate
anche se ho dei problemi di rete con ubuntu da mesi… magari puoi dare un’occhiata al mio topic: http://forum.ubuntu-it.org/index.php?topic=153519
@ pasquale, mi dispiace ma non sono così esperto da poterti aiutare…
post molto interessante soprattutto gli spunti di franganghi…
io uso da diverso tempo “Free NX” della (italiana) “no machine” che mi permette
di avere l’intero desktop grafico in remoto via ssh!!
http://www.nomachine.com/select-package.php?os=linux&id=1
basta installare sul proprio server in sequenza i pacchetti deb
nxnode
nxserver
nxclient
e aggiungere utenti linux in nx con:
sudo /usr/NX/bin/nxserver –useradd
sul client (portatile) basta installare solo il pacchetto
nxclient (c’è anche x winzoz!)
io lo uso da diversi punti d’accesso esterni, opportunamente filtrati a casa mia, ed è molto veloce (a casa ho una Alice 7 Mb)
Volevo inoltre segnalare che:
putty esiste nativo anche per linux (apt-get install putty)
invece di winscp, il nativo filezilla permette sia ftp che sftp via ssh (apt-get install filezilla)
esiste inoltre un bel server ssh free per winzoz se necessario……
http://www.freesshd.com/
Un saluto a tutti
Per i paranoidi an*l-retentivi (come me), provate a dare un’occhiata a tecniche di port-knocking.
Qualche regoletta di iptables e un semplice demone permette di aprire la porta dove avete installato il server ssh solamente a seguito di una determinata combinazione di tentativi di accesso su alcune porte.
Se qualcuno è curioso qui è spiegato meglio
Port Knocking (ArchLinux guide)
Port Knocking (wikipedia)
@ francesco, ok ma Putty serve a poco su Linux… Basta la cara bash con ssh.
Stesso dicasi per Filezilla. Ho anche provato a far andare quelle funzioni, ma è più comodo WinScp, che comunque si usa su Windows, su Linux si può montare un dispositivo ssh come se fosse una cartella, sia da Gnome che da Kde. 
Io non ho bisogno di tutta questa sicurezza, ma grazie per aver segnalato il link.
@ ZiK, urca, addirittura?
ciao
ho trovato il tuo post cercando di risolvere un problema nel trasferimento
file via ftp. uso come server un pc con linux da cui prelevo i file che mi servono.
usando come client ftp fugu oppure filezilla.
senza aver apportato alcuna modifica alla rete o al router da qualche giorno la
velocità di trasferimento tra il server e i gli altri pc si è drasticamente abbassata
e in qulache caso si blocca in partenza.
se faccio l’operazione inversa invece tutto nella norma.
il server ha installato ubuntu.
come posso intervenire??
Sei sicuro di non aver fatto proprio nessuna modifica a nulla?
l’unica modifica è stata la sostituzione dello schermo.
Allora non ho proprio idea di cosa possa essere…
se ti venisse in mente qualcosa….
per il momento mi arrangio via USB…
ciao e tx!!!