SSH

Traduzione(s): Deutsch – English – Français – Italiano – Español – Português Brasileiro

ToDo: unire (e tradurre) questa pagina e quella francese (più completa)

Introduzione

SSH sta per Secure Shell è un protocollo per l’accesso remoto protetto e altri servizi di rete su una rete non sicura network1. Vedi Wikipedia-Secure Shell per informazioni più generali e ssh, lsh-client o dropbear per le implementazioni software SSH di cui OpenSSH è il più popolare e più ampiamente usato2. SSH sostituisce il non crittografato telnet, rlogin e rsh e aggiunge molte funzionalità.

In questo documento useremo la suite di comandi OpenSSH, si presume anche che siano definite le seguenti due variabili:

remote_host=<the remote computer>remote_user=<your user name on $remote_host>

Quindi, se si desidera utilizzare le ricette di seguito, prima impostare queste variabili sul nome del computer remoto e il nome utente su quel computer remoto. Quindi taglia e incolla dei comandi qui sotto dovrebbe funzionare. remote_host può anche essere un indirizzo IP.

Installazione

Installazione del client

Normalmente il client viene installato per impostazione predefinita. Se non è sufficiente per eseguire come root:

apt install openssh-client

Installazione del server

Il server permette di connettersi in remoto e viene installato in esecuzione come root:

apt install openssh-server

i file di Configurazione

Il principale file di configurazione nella directory /etc/ssh :

  • ssh_config : il file di configurazione del client

  • sshd_config : file di configurazione del server

In aggiunta questa directory contiene la chiave privata/pubblica coppie che identificano l’host :

  • ssh_host_dsa_key
  • ssh_host_dsa_key.per ulteriori informazioni, consultare il sito .pub

Da OpenSSH 5.73, è disponibile una nuova coppia di chiavi private/pubbliche:

  • ssh_host_ecdsa_key
  • ssh_host_ecdsa_key.pub

Da OpenSSH 6.54, è disponibile una nuova coppia di chiavi private/pubbliche:

  • ssh_host_ed25519_key
  • ssh_host_ed25519_key.pub

Rigenerare le chiavi host

rm /etc/ssh/ssh_host_*dpkg-reconfigure openssh-server

Login remoto

Con password

Se si desidera accedere a remot remote_host come utente remot remote_user è sufficiente digitare

ssh $remote_user@$remote_host

e quindi digitare la password.

Se i nomi utente sul computer locale e sul computer remoto sono identici, puoi eliminare la parte remot remote_user@e scrivere semplicemente

ssh $remote_host

Se questa è la prima volta che accedi al computer remoto, ssh ti chiederà se sei sicuro di voler connetterti al computer remoto. Risposta ‘ sì ‘ dopo aver verificato l’impronta digitale del computer remoto, digitare la password e ssh si collegherà all’host remoto.

Utilizzo di chiavi condivise

Una delle funzioni di ssh è l’utilizzo di una coppia di chiavi private/pubbliche per connettersi a un host remoto. Conosciuto anche come chiavi SSH. Questo metodo consente di accedere a un host remoto senza digitare la password ogni volta. Per fare ciò è necessario generare una coppia di chiavi private/pubbliche sul computer locale e depositare la chiave pubblica sull’host remoto.

Per generare la chiave, utilizzare il programma ssh-keygen come segue

ssh-keygen -t rsa

Questo programma genera una coppia di chiavi private/pubbliche nella directory ~/.ssh. Il programma richiede prima i file di destinazione per le chiavi, per impostazione predefinita si trova in~/.ssh. Successivamente viene richiesta una passphrase.

Nota: Si consiglia di non lasciare vuota la passphrase. Un utente malintenzionato che ottiene la tua chiave privata può altrimenti connettersi agli host in cui hai depositato la tua chiave pubblica poiché la passphrase è vuota. Scegli una passphrase lunga e complessa.

La tua chiave privata è id_rsa (non darla a qualcun altro), la tua chiave pubblica è id_rsa.pub.

Si copia la chiave pubblica su un host remoto con il comando ssh-copy-id

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

Ora è possibile connettersi semplicemente all’host remoto e viene richiesta la passphase. Una volta fatto, ti connetti all’host remoto. In caso di una nuova connessione, la passphrase non viene richiesta di nuovo durante l’intera sessione.

Gestione delle chiavi

Utilizzando GUI

Opzionalmente, seahorse è un’applicazione GNOME che gestisce facilmente le chiavi di crittografia e le password attraverso un’interfaccia utente grafica intuitiva (GUI). Seahorse è in grado di fare varie operazioni. Come creare chiavi SSH o PGP, configurarle e memorizzarle nella cache. Per saperne di più.

Protezione

Server SSH

Per impostazione predefinita un server SSH è relativamente sicuro. Con l’aiuto di alcune buone pratiche, opzioni di configurazione e utilità esterne è possibile rendere ancora più difficile per “robot” e cracker

Buone pratiche con SSH Server

  • /!\ Applica gli aggiornamenti di sicurezza di openssh-server il prima possibile. Che permette di proteggere contro i buchi di sicurezza noti.

  • Attivare l’autenticazione delle chiavi SSH solo con password / passphrase. Disattivare l’autenticazione solo password.

  • Considerare l’utilizzo di fail2ban, che è un monitor di file di registro che vieta automaticamente un indirizzo IP dopo un numero predefinito di tentativi di accesso non riusciti. Che protegge automaticamente dagli attacchi di forza bruta.

  • Altre buone pratiche per l’utilizzo di ssh at https://lackof.org/taggart/hacking/ssh/

Opzioni di configurazione

(!) Si dovrebbe modificare il file / etc/ssh / sshd_config per modificare i parametri e quindi riavviare il server ssh con

service ssh restart
  • Disattivare l’utilizzo delle password per l’autenticazione (PasswordAuthentication no).

  • Disattivare utilizzando l’account root (PermitRootLogin no).

  • Consentire l’accesso solo da determinati utenti o gruppi (AllowUsers e AllowGroups)

{i} Le opzioni AllowUsers e AllowGroups non migliorano la sicurezza di un server SSH. Ma in alcuni casi il loro uso consente di resistere a un attacco di forza bruta un po ‘ più a lungo.

Utilità esterne

  • fail2ban: consente di inserire automaticamente nella blacklist IP che tentano di forzare bruta un server SSH con l’aiuto di iptables.

  • denyhosts : come fail2ban, denyhosts permette di bloccare gli indirizzi IP cercando di forzare bruta una connessione a ssh. Ma a differenza di fail2ban non usa iptables, ma il file/etc / hosts.negare.

SSH Client

Buone pratiche con SSH Client

  • /!\ Applica gli aggiornamenti di sicurezza di openssh-client il prima possibile. Che permette di proteggere contro i buchi di sicurezza noti.

  • Utilizzare l’autenticazione delle chiavi SSH. Piuttosto che l’autenticazione della password.

  • Aggiungi password/passphrase complesse alle tue chiavi SSH. Questo riduce il rischio di attacchi di forza bruta.

Funzioni Aggiuntive

Visualizza file GUI

Nel file manager come Konqueror, Delfino, Krusader e Midnight Commander è possibile utilizzare PESCE per visualizzare i file in una GUI utilizzando:

fish://username@server_name_or_ip

Comandi Aggiuntivi

scp

scp è una utility a riga di comando che permette di trasferire file tra due computer.

  • Invio di un file:
scp $source_file $remote_user@$remote_host:$destination_file
  • Copia di un file sul computer locale:
scp $remote_user@$remote_host:$source_file $destination_file

sftp

modalità testo

modalità grafica

clusterssh

ssh-agent e ssh-add

ssh-agent è un’utile utility per gestire le chiavi private e le relative passphrase. La maggior parte degli ambienti desktop in Debian sarà già configurata per eseguire ssh-agent (tramite systemd user services o /etc/X11/Xsession), quindi non dovrebbe essere necessario avviarlo manualmente.

# Check if ssh-agent is runningenv | grep -i ssh

Dovrai comunque dire all’agente di gestire le tue chiavi.

# List keys managed by the agentssh-add -l# Add your ssh keyssh-add ~/.ssh/your_private_key

Quando è necessaria per la prima volta una chiave privata, viene richiesta la sua passphrase. ssh-agent ricorderà quindi la chiave in modo che la passphrase non venga più richiesta.

portachiavi

Portachiavi, fornito dal pacchetto portachiavi, è uno script di shell che consente di utilizzare l’agente ssh in più sessioni dello stesso computer. In effetti dopo il primo avvio ssh-agent crea un socket permanente che consente la comunicazione con ssh. A questo socket viene fatto riferimento solo nell’ambiente della sessione in cui è stato avviato l’agente. Portachiavi consente di rilevare l’agente e propagare l’accesso a questo agente ad altre sessioni; ciò consente di utilizzare una singola istanza di ssh-agent per utente su una macchina.

ssh-askpass

ssh-askpass è un’utilità per semplicemente la domanda per la password di una chiave privata quando la si utilizza. 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à (disponibile solo fino a Debian Jessie) che consente l’autenticazione con una chiavetta USB. Questo pacchetto include un utilty utile: pamusb-agent. Questa utility, una volta configurata correttamente, consente di caricare le chiavi SSH presenti sulla chiavetta USB una volta collegata e di scaricarle quando è scollegata.

Comandi remoti

Se si desidera solo eseguire un comando sul computer remoto, non è necessario effettuare il login. Puoi 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 funziona con virgolette singole ‘…”come mostrato qui, con virgolette doppie “…”, e senza virgolette. Ci possono essere differenze tra questi tre casi, anche se, non ancora documentato qui.

SSH in Debian da un altro sistema operativo

  • PuTTY è un’applicazione emulatore di terminale che può agire come un client per ssh. È ampiamente utilizzato dagli utenti Windows.

  • Wikipedia ha Comparison_of_SSH_clients

Buone pratiche di utilizzo di SSH

È necessario leggere questo: https://lackof.org/taggart/hacking/ssh/

Questo documento riassume molte buone pratiche regolari SSH gli utenti devono attenersi al fine di evitare di compromettere la sicurezza del proprio account (e di tutta la macchina allo stesso tempo).

Configura il tuo~/.ssh / config per inviare solo la chiave giusta.

Host master.debian.org User account IdentityFile ~/.ssh/id_rsa IdentitiesOnly yes

Risoluzione dei problemi

Mancata corrispondenza della versione di OpenSSL. Costruito contro 1000105f, hai 10001060

Se ricevi un messaggio di errore come questo quando avvii il demone ssh, devi eseguire:

apt install openssh-server openssh-client

Vedi anche bug # 732940.

SSH si blocca

Problema

Si sta tentando di SSH in un computer remoto. Ma durante il log-in SSH la sessione si blocca / si blocca indefinitamente. Così non si sono presentati con il prompt dei comandi. E non è possibile utilizzare alcun comando SSH : ( Quando si utilizza la modalità di debug SSH, la sessione si blocca a questa riga debug2: canale 0: aprire conferma rwindow 0 rmax 32768

Possibile causa

Con alcuni router dietro NAT e quando si utilizza OpenSSH. Durante l’impostazione della sessione, dopo aver fornito la password, OpenSSH imposta il campo TOS (tipo di servizio) nel datagramma IP. Il router soffocare su questo. L’effetto è che la sessione SSH si blocca indefinitamente. In altre parole, i comandi o le connessioni SSH raramente funzionano o non funzionano affatto.

Risoluzione con IPQoS 0x00

Fino a quando il produttore del router non corregge il firmware. Ecco un’opzione per risolvere questo problema:

  1. Ricontrolla la versione openssh-server e openssh-client 5.7 o più recente. Ad esempio, la risoluzione qui sotto dovrebbe funzionare con Debian 7.11 Wheezy o più recente come viene fornita con OpenSSH versione 6.0.

  2. Modificare uno dei seguenti due file situati in:

    ~/.ssh/config

    o

    /etc/ssh/ssh_config

    Nota: il file di configurazione è per utente e il file ssh_config è per tutti gli utenti e a livello di sistema. In caso di dubbi modificare il file di configurazione utente appropriato.

    Contenuto file prima

    Host *

    Contenuto file dopo

    Host * IPQoS 0x00
  3. Se hai già aperto una o più finestre di Terminale/console. Chiudere completamente tutti loro. In questo modo si chiuderanno tutte le sessioni SSH attive.
  4. Non c’è bisogno di riavviare OpenSSH o Debian. Riprova a SSH in qualsiasi server remoto. Dovrebbe funzionare. Fatto correttamente hanno risolto il problema :)

    Grazie a Joe e catmaker per questo suggerimento :)

    la documentazione relativa a https://www.openssh.com/txt/release-5.7

Risoluzione con netcat

/!\ ATTENZIONE: Si consiglia di considerare l’utilizzo di un’altra risoluzione con IPQoS 0x00 invece di utilizzare l’opzione netcat/ProxyCommand nc %h %p. Perché IPQoS 0x00 è l’opzione OpenSSH integrata ufficiale. Anche IPQoS 0x00 è un modo più diretto per risolvere questo problema e un’opzione potenzialmente più sicura. Poiché IPQoS 0x00 utilizza la crittografia integrata di SSH per i trasferimenti sicuri. Confronta con i trasferimenti non crittografati di netcat. Fonti: 1 2. Se si sceglie di utilizzare l’opzione netcat/ProxyCommand nc %h %p, continuare a leggere.

Un’altra opzione per risolvere il problema di blocco SSH è usare ProxyCommand nc %h %p. Per fare ciò seguire gli stessi passaggi di quella sopra risoluzione con IPQoS 0x00. Ma sostituisci IPQoS 0x00 con

ProxyCommand nc %h %p

Mantieni attiva la connessione SSH

Per motivi di sicurezza, per impostazione predefinita una connessione SSH viene chiusa automaticamente dopo un determinato periodo di tempo. Ma in alcuni casi si desidera mantenere aperta quella connessione. Come ad esempio cloud storage tramite connessione SSH.

/!\ ATTENZIONE: Prima di attivare l’opzione mantieni attiva la connessione SSH. Si consiglia di considerare la protezione sia del client SSH che del server SSH. Perché, ad esempio, c’è il rischio che se gli utenti lasciano la loro sessione SSH aperta, e il loro computer incustodito e sbloccato. Chiunque può avvicinarsi a quel computer, quindi sfruttare quella connessione SSH aperta. Ad esempio utilizzando il comando passwd, e modificare la password. E quindi ottenere l’accesso al server. In altre parole, prima di attivare l’opzione keep SSH connection alive, si consiglia di utilizzare il miglior giudizio e le buone pratiche di sicurezza.

Per Debian 7.x server

Passaggi per mantenere attiva la connessione SSH.

Sul server SSH modificare il file/etc/ssh / sshd_config e aggiungere quanto segue nella parte inferiore del file.

# Keep client SSH connection alive by sending every 300 seconds a small keep-alive packet to the server in order to use ssh connection. 300 seconds equal 5 minutes.ClientAliveInterval 300 # Disconnect client after 3333 "ClientAlive" requests. Format is (ClientAliveInterval x ClientAliveCountMax). In this example (300 seconds x 3333) = ~999,900 seconds = ~16,665 minutes = ~277 hours = ~11 days.ClientAliveCountMax 3333

Come utente root riavviare il servizio SSH:

service sshd restart

Si noti che sui sistemi Debian recenti (ad esempio Wheezy 7 con aggiornamenti correnti a partire da nov. 2015), il comando precedente non funziona più e restituisce l’errore:

sudo service sshd restartsshd: unrecognized service

Tuttavia, i seguenti lavori:

sudo service ssh restart Restarting OpenBSD Secure Shell server: sshd.

Vedi anche

  • multiplexer schermo-terminale con emulazione terminale VT100 / ANSI

  • tmux-multiplexer terminale alternativo

CategoryNetwork CategorySoftware

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.