Size: 5877
Comment: first translated version
|
Size: 10683
Comment: sync with English master
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
## page was renamed from it/ssh | |
Line 2: | Line 3: |
~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: English - [[fr/ssh|Français]] - [[it/ssh|Italiano]] -~ | ~-[[DebianWiki/EditorGuide#translation|Translation(s)]]: [[de/SSH|Deutsch]] - [[SSH|English]] - [[fr/SSH|Français]] - Italiano -~ |
Line 6: | Line 7: |
DaFare: unire (e tradurre) questa pagina e quella in francese che è più completa. | !DaFare(vedi originale inglese): unire (e tradurre) questa pagina e quella in francese che è più completa. |
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à.) All'interno del resto del documento si presume che siano definite le seguenti due variabili: |
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 protocolli non cifrati [[WikiPedia:telnet|telnet]], [[WikiPedia:Rlogin|rlogin]] e [[WikiPedia:Remote_shell|rsh]] e apporta molte funzionalità. In questo documento verrà usata la suite OpenSSH, si presume che siano definite le seguenti due variabili: |
Line 19: | Line 20: |
== Installazione == === Installazione del client === Normalmente il client viene installato in modo predefinito. Se ciò non accadesse, eseguire come root: {{{ apt-get install openssh-client }}} === Installazione del server === Il server permette di connettersi da remoto e si installa eseguendo da root: {{{ apt-get install openssh-server }}} == File di configurazione == I principali file di configurazione sono nella directory ''/etc/ssh'' : * '''ssh_config''' : file di configurazione del client * '''sshd_config''' : file di configurazione del server In aggiunta questa directory contiene le coppie di chiavi private/pubbliche che identificano l'host: * ssh_host_dsa_key * ssh_host_dsa_key.pub * ssh_host_rsa_key * ssh_host_rsa_key.pub A partire da OpenSSH 5.7<<FootNote(http://openbsd.das.ufsc.br/openssh/txt/release-5.7)>>, è disponibile una nuova coppia di chiavi pubblica/privata: * ssh_host_ecdsa_key * ssh_host_ecdsa_key.pub === Rigenerare le chiavi dell'host === {{{ rm /etc/ssh/ssh_host_* dpkg-reconfigure openssh-server }}} |
|
Line 20: | Line 64: |
=== Con password === | |
Line 25: | Line 70: |
e inserire la password. | |
Line 30: | Line 76: |
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. | Se questa è la prima volta che si fa il login sul computer remoto, ssh chiede se si è certi di volersi connettere. Rispondere "sì" dopo aver verificato il fingerprint e poi inserire la propria password, e ssh effettua il login remoto. === Usando chiavi condivise === Una delle funzioni di ssh è l'uso di una coppia di chiavi privata/pubblica per connettersi ad un host remoto. Questo metodo permette il login ad un host remoto senza dover digitare ogni volta la propria password. Per farlo è necessario generare una coppia di chiavi privata/pubblica sulla macchina locale e depositare la chiave sull'host remoto. Per generare la chiave si usa il programma ssh-keygen {{{ ssh-keygen -t rsa }}} Questo programma genera una coppia di chiavi privata/pubblica nella directory ~/.ssh. Il programma chiede prima i file di destinazione per le chiavi, che sono in modo predefinito posizionati in ~/.ssh. Successivamente viene richiesta una passphrase. Nota bene: è raccomandato di non lasciare la passphrase vuota. Un autore di un attacco che riuscisse ad ottenere la chiave privata potrebbe altrimenti connettersi agli host dove è stata depositata la chiave pubblica dato che la passphrase è vuota. Scegliere una passphrase lunga e complessa. La chiave privata è is id_rsa (non darla a nessun altro), la chiave pubblica è id_rsa.pub. Si può copiare la propria chiave pubblica su un host remoto usando il comando '''ssh-copy-id''' {{{ ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host }}} Ora ci si può connettere semplicemente all'host remoto e verrà richiesta la passphase. Una volta inserita si è connessi all'host remoto. In caso di una nuova connessione la passphrase non viene più richiesta per tutta l'intera sessione. == Garantire la sicurezza == Un server SSH è in modo predefinito relativamente sicuro. con l'aiuto di alcune opzioni di configurazione e di utilità esterne è possibile renderlo ancora più ostico per gli ''attaccanti'' (cracker). /!\ L'uso della più recente versione del pacchetto DebianPkg:openssh-server permette di proteggersi dalle falle di sicurezza conosciute. === Opzioni di configurazione === (!) Si dovrebbe modificare il file /etc/ssh/sshd_config per cambiare i parametri e poi riavviare il server ssh con {{{ invoke-rc.d ssh restart }}} * Deattivare l'uso delle password per l'autenticazione (''!PasswordAuthentication no''). * Deattivare l'uso dell'account root (''!PermitRootLogin no''). * Permettere solamente il login da parte di utenti o gruppi specifici (''!AllowUsers'' e ''!AllowGroups'') {i} Le opzioni ''!AllowUsers'' e ''!AllowGroups'' non migliorano la sicurezza di un server SSH. Ma, in alcuni casi, il loro uso permette di resistere un po' più a lungo ad attacchi con forza bruta. === Utilità esterne === * DebianPkg:fail2ban : permette, con l'aiuto di DebPkg:iptables, di mettere automaticamente in una lista nera gli IP che cercano di attaccare un server SSH con la "forza bruta". * DebianPkg:denyhosts : come DebianPkg:fail2ban, DebianPkg:denyhosts permette di bloccare indirizzi IP che cercano di attaccare con la forza bruta una connessione a ssh. A differenza di DebianPkg:fail2ban però, non usa DebianPkg:iptables, ma il file ''/etc/hosts.deny''. == Funzioni aggiuntive == == Comandi aggiuntivi == === scp === ''scp'' è un'utilità a riga di comando che permette di trasferire file tra due macchine. * Invio di un file: {{{ scp $file_sorgente $utente_remoto@$host_remoto:$file_destinazione }}} * Copia di un file nella macchina locale: {{{ scp $utente_remoto@$host_remoto:$file_sorgente $file_destinazione }}} === sftp === [da scrivere in futuro] ==== text mode ==== [da scrivere in futuro] ==== graphical mode ==== [da scrivere in futuro] === clusterssh === [da scrivere in futuro] === ssh-agent e ssh-add === ''ssh-agent'' è un'applicazione utile per gestire le chiavi private e le loro password. Dovrebbe essere invocato all'inizio della sessione, in una bourne shell in modo simile a questo: {{{ eval `ssh-agent -s` }}} o in una shell C: {{{ eval `ssh-agent -c` }}} Quando una chiave privata è necessaria per la prima volta, viene chiesta all'utente la sua password e ssh-agent ricorda la chiave. Successivamente, ogni volta che quella chiave private viene usata, la password non viene più chiesta. ''ssh-add'' può essere usato per gestire le chiavi ricordate: * Aggiungere una chiave: '''ssh-add $chiave_privata''' * Elencare le chiavi aggiunte: '''ssh-add -l''' * Rimuovere tutte le chiavi conosciute da ''ssh-agent'': '''ssh-add -D''' === Portachiavi === ''keychain'' fornito dal pacchetto DebianPkg:keychain è uno script di shell che permette di usare l'agente ssh in sessioni multiple sullo stesso computer. Di fatto, dopo il primo avvio ssh-agent crea un socket permanente che permette la comunicazione con ssh. Questo socket è referenziato solo nell'ambiente della sessione in cui l'agente è stato avviato. Keychain permette di rilevare l'agente e propagare l'accesso a tale agente ad altre sessioni: ciò permette di usare su una macchina una singola istanza di ssh-agent per utente. === ssh-askpass === ''DebianPkg:ssh-askpass'' è un'utilità per semplificare il processo di richiesta della password di una chiave privata quando essa viene usata. Esistono diverse implementazioni: * '''x11-ssh-askpass''': versione per X11 * '''kaskpass''': integrazione di ssh-askpass nell'ambiente KDE * '''ssh-askpass-gnome''': integrazione di ssh-askpass nell'ambiente Gnome === libpam-usb === ''DebianPkg:libpam-usb'' è un'utilità che permette l'autenticazione con una chiavetta USB. Questo pacchetto include un'applicazione utile: ''pamusb-agent''. Questa utilità, una volta configurata correttamente, permette di caricare le chiavi SSH presenti sulla chiavetta USB una volta che questa è connessa e di scaricarle quando viene disconnessa. ---- |
Line 40: | Line 196: |
== 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 -t dsa }}} 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_dsa.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_dsa.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 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. '''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 == |
== Login SSH in Debian da un altro sistema operativo == |
Line 87: | Line 207: |
== Risoluzione dei problemi == === Errore "OpenSSL version mismatch. Built against 1000105f, you have 10001060" === Se si ottiene un messaggio di errore come questo quando si avvia il demone "ssh" è necessario eseguire: {{{ apt-get install openssh-server openssh-client }}} Vedre anche [[DebianBug:732940|la segnalazione di bug]]. |
Translation(s): Deutsch - English - Français - Italiano
Contents
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 protocolli 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.
Installazione
Installazione del client
Normalmente il client viene installato in modo predefinito. Se ciò non accadesse, eseguire come root:
apt-get install openssh-client
Installazione del server
Il server permette di connettersi da remoto e si installa eseguendo da root:
apt-get install openssh-server
File di configurazione
I principali file di configurazione sono nella directory /etc/ssh :
ssh_config : file di configurazione del client
sshd_config : file di configurazione del server
In aggiunta questa directory contiene le coppie di chiavi private/pubbliche che identificano l'host:
- ssh_host_dsa_key
- ssh_host_dsa_key.pub
- ssh_host_rsa_key
- ssh_host_rsa_key.pub
A partire da OpenSSH 5.73, è disponibile una nuova coppia di chiavi pubblica/privata:
- ssh_host_ecdsa_key
- ssh_host_ecdsa_key.pub
Rigenerare le chiavi dell'host
rm /etc/ssh/ssh_host_* dpkg-reconfigure openssh-server
Login remoto
Con password
Se si desidera fare il login su $remote_host come utente $remote_user digitare semplicemente
ssh $remote_user@$remote_host
e inserire la password. 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 sul computer remoto, ssh chiede se si è certi di volersi connettere. Rispondere "sì" dopo aver verificato il fingerprint e poi inserire la propria password, e ssh effettua il login remoto.
Usando chiavi condivise
Una delle funzioni di ssh è l'uso di una coppia di chiavi privata/pubblica per connettersi ad un host remoto. Questo metodo permette il login ad un host remoto senza dover digitare ogni volta la propria password. Per farlo è necessario generare una coppia di chiavi privata/pubblica sulla macchina locale e depositare la chiave sull'host remoto.
Per generare la chiave si usa il programma ssh-keygen
ssh-keygen -t rsa
Questo programma genera una coppia di chiavi privata/pubblica nella directory ~/.ssh. Il programma chiede prima i file di destinazione per le chiavi, che sono in modo predefinito posizionati in ~/.ssh. Successivamente viene richiesta una passphrase.
Nota bene: è raccomandato di non lasciare la passphrase vuota. Un autore di un attacco che riuscisse ad ottenere la chiave privata potrebbe altrimenti connettersi agli host dove è stata depositata la chiave pubblica dato che la passphrase è vuota. Scegliere una passphrase lunga e complessa.
La chiave privata è is id_rsa (non darla a nessun altro), la chiave pubblica è id_rsa.pub.
Si può copiare la propria chiave pubblica su un host remoto usando il comando ssh-copy-id
ssh-copy-id -i ~/.ssh/id_rsa.pub $remote_user@$remote_host
Ora ci si può connettere semplicemente all'host remoto e verrà richiesta la passphase. Una volta inserita si è connessi all'host remoto. In caso di una nuova connessione la passphrase non viene più richiesta per tutta l'intera sessione.
Garantire la sicurezza
Un server SSH è in modo predefinito relativamente sicuro. con l'aiuto di alcune opzioni di configurazione e di utilità esterne è possibile renderlo ancora più ostico per gli attaccanti (cracker).
L'uso della più recente versione del pacchetto openssh-server permette di proteggersi dalle falle di sicurezza conosciute.
Opzioni di configurazione
Si dovrebbe modificare il file /etc/ssh/sshd_config per cambiare i parametri e poi riavviare il server ssh con
invoke-rc.d ssh restart
Deattivare l'uso delle password per l'autenticazione (PasswordAuthentication no).
Deattivare l'uso dell'account root (PermitRootLogin no).
Permettere solamente il login da parte di utenti o gruppi specifici (AllowUsers e AllowGroups)
Le opzioni AllowUsers e AllowGroups non migliorano la sicurezza di un server SSH. Ma, in alcuni casi, il loro uso permette di resistere un po' più a lungo ad attacchi con forza bruta.
Utilità esterne
fail2ban : permette, con l'aiuto di iptables, di mettere automaticamente in una lista nera gli IP che cercano di attaccare un server SSH con la "forza bruta".
denyhosts : come fail2ban, denyhosts permette di bloccare indirizzi IP che cercano di attaccare con la forza bruta una connessione a ssh. A differenza di fail2ban però, non usa iptables, ma il file /etc/hosts.deny.
Funzioni aggiuntive
Comandi aggiuntivi
scp
scp è un'utilità a riga di comando che permette di trasferire file tra due macchine.
- Invio di un file:
scp $file_sorgente $utente_remoto@$host_remoto:$file_destinazione
- Copia di un file nella macchina locale:
scp $utente_remoto@$host_remoto:$file_sorgente $file_destinazione
sftp
[da scrivere in futuro]
text mode
[da scrivere in futuro]
graphical mode
[da scrivere in futuro]
clusterssh
[da scrivere in futuro]
ssh-agent e ssh-add
ssh-agent è un'applicazione utile per gestire le chiavi private e le loro password. Dovrebbe essere invocato all'inizio della sessione, in una bourne shell in modo simile a questo:
eval `ssh-agent -s`
o in una shell C:
eval `ssh-agent -c`
Quando una chiave privata è necessaria per la prima volta, viene chiesta all'utente la sua password e ssh-agent ricorda la chiave. Successivamente, ogni volta che quella chiave private viene usata, la password non viene più chiesta.
ssh-add può essere usato per gestire le chiavi ricordate:
Aggiungere una chiave: ssh-add $chiave_privata
Elencare le chiavi aggiunte: ssh-add -l
Rimuovere tutte le chiavi conosciute da ssh-agent: ssh-add -D
Portachiavi
keychain fornito dal pacchetto keychain è uno script di shell che permette di usare l'agente ssh in sessioni multiple sullo stesso computer. Di fatto, dopo il primo avvio ssh-agent crea un socket permanente che permette la comunicazione con ssh. Questo socket è referenziato solo nell'ambiente della sessione in cui l'agente è stato avviato. Keychain permette di rilevare l'agente e propagare l'accesso a tale agente ad altre sessioni: ciò permette di usare su una macchina una singola istanza di ssh-agent per utente.
ssh-askpass
ssh-askpass è un'utilità per semplificare il processo di richiesta della password di una chiave privata quando essa viene usata. Esistono diverse implementazioni:
x11-ssh-askpass: versione per X11
kaskpass: integrazione di ssh-askpass nell'ambiente KDE
ssh-askpass-gnome: integrazione di ssh-askpass nell'ambiente Gnome
libpam-usb
libpam-usb è un'utilità che permette l'autenticazione con una chiavetta USB. Questo pacchetto include un'applicazione utile: pamusb-agent. Questa utilità, una volta configurata correttamente, permette di caricare le chiavi SSH presenti sulla chiavetta USB una volta che questa è connessa e di scaricarle quando viene disconnessa.
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.
Login SSH in Debian da un altro sistema operativo
PuTTY è un'applicazione per emulatore di terminale che può agire da client per ssh. È largamente usata dagli utenti Windows.
Wikipedia ha una pagina che mette a confronto tra loro i client SSH: Comparison_of_SSH_clients
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
http://lackof.org/taggart/hacking/ssh/ - Buone norme d'uso per ssh
Risoluzione dei problemi
Errore "OpenSSL version mismatch. Built against 1000105f, you have 10001060"
Se si ottiene un messaggio di errore come questo quando si avvia il demone "ssh" è necessario eseguire:
apt-get install openssh-server openssh-client
Vedre anche la segnalazione di bug.