Differences between revisions 2 and 4 (spanning 2 versions)
Revision 2 as of 2011-07-09 14:31:43
Size: 5902
Comment: minor fix
Revision 4 as of 2011-09-17 18:36:52
Size: 6234
Editor: ?skizzhg
Comment: sync with english
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
## page was renamed from it/ssh
Line 9: Line 10:
ssh sta per '''s'''ecure '''sh'''ell (shell sicura) ed è un programma per login remoto su altri computer e per eseguire singoli comandi su altri computer in modo sicuro; vedere [[http://en.wikipedia.org/wiki/Secure_Shell|Secure Shell su Wikipedia]] per maggiori informazioni generiche e [[http://www.openssh.org/|OpenSSH]], DebPkg:lsh-server o DebPkg:dropbear per la pagina web di ssh. (ssh rimpiazza il protocollo non cifrato WikiPedia:telnet e apporta molte funzionalità.) SSH sta per '''S'''ecure '''Sh'''ell ed è un protocollo per login remoto sicuro e altri servizi di rete sicuri su reti non sicure<<FootNote(http://tools.ietf.org/html/rfc4252)>>. Vedere [[http://en.wikipedia.org/wiki/Secure_Shell|Secure Shell su Wikipedia]] per maggiori informazioni generiche e DebPkg:ssh, DebPkg:lsh-client o DebPkg:dropbear per implementazioni software, di cui [[http://www.openssh.org/|OpenSSH]] è il più popolare e utilizzato<<FootNote(http://www.openssh.org/users.html)>>. SSH rimpiazza i protocollo non cifrati [[WikiPedia:telnet|telnet]], [[WikiPedia:Rlogin|rlogin]] e [[WikiPedia:Remote_shell|rsh]] e apporta molte funzionalità.
Line 11: Line 12:
All'interno del resto del documento si presume che siano definite le seguenti due variabili: In questo documento verrà usata la suite OpenSSH, si presume che siano definite le seguenti due variabili:
Line 46: Line 47:
ssh-keygen -t dsa ssh-keygen
Line 54: Line 55:
cat .ssh/id_dsa.pub | ssh $remote_user@$remote_host 'cat >> .ssh/authorized_keys' cat .ssh/id_rsa.pub | ssh $remote_user@$remote_host 'cat >> .ssh/authorized_keys'
Line 61: Line 62:
ssh-copy-id -i ~/.ssh/id_dsa.pub $remote_user@$remote_host ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host
Line 69: Line 70:
 '''ANNOTAZIONE:''' L'esempio soprastante presume l'uso del protocollo ssh 2 e usa la cifratura DSA, che è quella attualmente raccomandata. Si potrebbe usare anche la cifratura RSA per il protocollo ssh 2. Il protocollo ssh 1 usa un'altra cifratura ancora, ma è obsoleta.  '''ANNOTAZIONE:''' L'esempio soprastante presume l'uso del protocollo SSH 2 e usa la cifratura RSA. La cifratura DSA per il protocollo SSH 2 e il protocollo SSH 1 sono entrambi obsoleti<<FootNote(http://www.debian.org/doc/manuals/reference/ch06.it.html#_connecting_without_remote_passwords)>> e '''non''' raccomandati<<FootNote(http://wiki.debian.org/SSLkeys#Identifying_Weak_Keys)>>

Translation(s): English - ?Français - ?Italiano

DaFare(vedi originale inglese): unire (e tradurre) questa pagina e quella in francese che è più completa.

Introduzione

SSH sta per Secure Shell ed è un protocollo per login remoto sicuro e altri servizi di rete sicuri su reti non sicure1. Vedere Secure Shell su Wikipedia per maggiori informazioni generiche e ssh, lsh-client o dropbear per implementazioni software, di cui OpenSSH è il più popolare e utilizzato2. SSH rimpiazza i protocollo non cifrati telnet, rlogin e rsh e apporta molte funzionalità.

In questo documento verrà usata la suite OpenSSH, si presume che siano definite le seguenti due variabili:

remote_host=<il computer remoto>
remote_user=<il nome utente su $remote_host>

Perciò, se si desiderano usare le indicazioni fornite più avanti, come prima cosa impostare queste variabili con il nome del computer remoto e il nome utente su quel computer remoto. Poi i comandi indicati in seguito potranno essere copiati e incollati con successo. remote_host può anche essere un indirizzo IP.

Login remoto

Se si desidera fare il login su $remote_host come utente $remote_user digitare semplicemente

ssh $remote_user@$remote_host

Se il nome utente remoto è uguale a quello locale, si può omettere la parte $remote_user@ e scrivere solamente

ssh $remote_host

Se questa è la prima volta che si fa il login sulla macchina remota, ssh chiede se si è certi di volersi connettere al computer remoto. Rispondere "sì" e poi inserire la propria password, e ssh effettua il login remoto.

Comandi in remoto

Se si desidera eseguire un solo comando sul computer remoto, non è necessario fare il login. Si può semplicemente dire a ssh di eseguire il comando senza login, ad esempio:

ssh $remote_user@$remote_host 'ls *.txt'

elenca tutti i file con estensione .txt sul computer remoto. Questo comando funziona con le virgolette singole '...' come nell'esempio, con le virgolette doppie "..." e senza virgolette. Ci possono essere differenze tra le tre cose, però, anche se non verranno documentate in questa pagina.

ssh senza password

Se si lavora spesso su un computer remoto, dover digitare la password ogni volta che si usa ssh può diventare noioso. Si può configurare ssh in modo che non chieda più la password per quella particolare connessione. Si deve generare sulla propria macchina una chiave di cifratura privata e una pubblica e fornire la chiave pubblica alla macchina remota.

Per generare le chiavi eseguire:

ssh-keygen

e rispondere a tutte le domande semplicemente premendo Invio.

Per fornire la chiave pubblica alla macchina remota, creare prima una directory .ssh su di essa (se non è già presente) e poi aggiungere la chiave pubblica della propria macchina locale al file authorized_keys sulla macchina remota.

ssh $remote_user@$remote_host mkdir -p .ssh
cat .ssh/id_rsa.pub | ssh $remote_user@$remote_host 'cat >> .ssh/authorized_keys'

Notare che in questo esempio il comando cat all'interno del comando ssh prende il proprio input dalla pipe.

Oppure si può usare

ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host

Da questo momento in poi dovrebbe essere possibile fare il login con ssh senza password.

  • ANNOTAZIONE: Se i nomi utente sulla macchina locale e sulla macchina remota sono identici, e se il computer locale e quello remoto hanno accesso alla stessa directory home per quell'utente, ad esempio perché sono client diversi nella stessa LAN con una directory home comune montata via nfs, allora la chiave privata, la chiave pubblica e il file authorized_keys saranno tutti nella stessa directory. Perciò non solo si potrà fare il login senza password dalla macchina locale a quella remota, ma anche vice versa. Di fatto si potrà fare il login da qualsiasi computer nella LAN a qualsiasi altro computer. (La voce nome_utente@nome_host alla fine della chiave pubblica nel file authorized_keys non ha importanza per ssh, lo si può cancellare o cambiare se lo si desidera (o così crede l'autore di questa nota)).

    ANNOTAZIONE: L'esempio soprastante presume l'uso del protocollo SSH 2 e usa la cifratura RSA. La cifratura DSA per il protocollo SSH 2 e il protocollo SSH 1 sono entrambi obsoleti3 e non raccomandati4

    RISOLUZIONE DI PROBLEMI (ssh continua a chiedere la password): Il login senza password non funziona se il gruppo o tutti hanno il permesso di scrittura per la directory home sulla macchina remota. Per risolvere il problema, eseguire:

    ssh $remote_user@$remote_host chmod g-w,o-w /home/$remote_user

    FONTE: Mathias Kettner, SSH login without password, http://www.linuxproblem.org/art_9.html, visitato il 2007-10-06.

Login SSH in Debian da un altro OS

SSH e la sicurezza

Server SSH

  • Considerare l'uso di fail2ban che è uno strumento di monitoraggio dei file di log che mette al bando automaticamente un indirizzo IP dopo un numero predefinito di tentativi di login falliti. Protegge dagli attacchi con forza bruta.

  • Usare chiavi SSH piuttosto che la password.

Client SSH