Installazione e configurazione di un server SSH su Linux. Come utilizzare il protocollo SSH in Ubuntu: installazione e configurazione Non si connette tramite ssh ubuntu

Questo articolo riguarda le impostazioni accesso remoto al server Ubuntu. Il principio di connessione è molto semplice: lato client utilizziamo un programma per l'accesso remoto (ad esempio Putty), lato server installiamo e configuriamo il pacchetto OpenSSH. Durante la connessione, il client viene sottoposto a una procedura di autorizzazione con il server e tra loro viene stabilita una connessione crittografata. Il principio di funzionamento del protocollo SSH è stato discusso più dettagliatamente nell'articolo su.

Lo schema della rete è mostrato di seguito. La connessione remota al server verrà effettuata dal computer client.

Abbiamo installato Ubuntu Server su un disco rigido pulito. Dopo l'installazione, è necessario configurare l'interfaccia di rete del server per accedere alla rete. Vale a dire, impostare l'indirizzo IP, la maschera di rete, il gateway predefinito. Se la tua interfaccia è già configurata, puoi saltare questo passaggio. Impostazioni interfacce di rete sono specificati nel file /etc/rete/interfacce. Per modificare utilizzeremo un editor di testo nano.

Entriamo nella modalità di modifica del file delle interfacce. Siamo interessati a tutto ciò che segue # L'interfaccia di rete primaria. IN questo momento il server riceve un indirizzo IP tramite DHCP, il che non è del tutto corretto. Il server deve avere un IP statico in modo che tutti i nodi della rete conoscano esattamente il suo indirizzo. Scriviamolo impostazioni di rete manualmente.

Il mio server si trova sulla sottorete locale 192.168.1.0/24. Al server viene assegnato IP 192.168.1.2, maschera 255.255.255.0, gateway predefinito 192.168.1.1, indirizzo server DNS 192.168.0.1

Per salvare il file, premi Ctrl + X –> Y –> Invio. Per applicare le impostazioni è necessario riavviare il processo di rete. Puoi anche semplicemente riavviare il server con il comando sudo reboot.

Controlla (comando ifconfig -a) – le impostazioni vengono applicate

Tutto è pronto per OpesnSS, che può essere installato da terminale utilizzando i comandi

$ sudo apt-get install openssh-client

$ sudo apt-get install openssh-server

Puoi controllare l'avvio, l'arresto e il riavvio del server SSH utilizzando i comandi

$sudo servizio ssh fermare | inizio | ricomincia

In effetti, hai già accesso SSH al server. Ma di più ritocchi C'è un file di configurazione in /etc/ssh/sshd_config. L'accesso alle configurazioni è possibile solo da root.

Lato client scarica qualsiasi programma per connetterti tramite SSH, io consiglio Putty. Nel programma tutto quello che devi fare è inserire l’indirizzo IP del server e connetterti ad esso. Durante la connessione, inserire il nome utente e la password.


Iscriviti al nostro


Per installare il server ssh, esegui nel terminale:

Ubuntu/Debian/Linux Mint

Quindi modifica le impostazioni del server ssh nel file /etc/ssh/sshd_config
Per fare ciò, nel terminale esegui:


Inoltre, affinché OpenSSH ascolti solo determinati indirizzi IP, ad esempio 192.168.0.50, 192.168.0.51 sulla porta 777, è sufficiente aggiungere le seguenti righe:

Limitare l'accesso tramite SSH per gli utenti: test test2 test3

Il server OpenSSH può utilizzare il protocollo Rlogin per l'autorizzazione e può simulare il comportamento del comando legacy rsh, quindi disabilita la lettura file utente~/.rhosts e ~/.shosts:

Abilita il banner di avviso modificando la riga seguente e creando quanto segue. file:

Salva i log, assicurati che la direttiva LogLevel sia impostata su INFO o DEBUG

Per riavviare OpenSSH su CentOS, Fedora o RHEL:

In alcuni casi, puoi avviare il server solo in questo modo:


Per verificare lo stato del server utilizzare il comando seguente


Ora puoi accedere a un computer con il server OpenSSH installato in questo modo:

Ssh [-p porta]

Per esempio:

CentOS / RHEL / Fedora Linux: puoi disabilitare o rimuovere OpenSSH in questo modo:

$chkconfig sshd disattivato
$ yum cancella openssh-server

Principali file e cartelle SSH:
~/.ssh/ - directory di configurazione dell'utente
~/.ssh/authorized_keys e ~/.ssh/authorized_keys2 - elenchi di chiavi pubbliche (RSA o DSA) che possono essere utilizzate per autorizzare un account utente
~/.ssh/known_hosts - chiavi del server
/etc/ssh/sshd_config - File di configurazione del server OpenSSH
/etc/ssh/ssh_config - File di configurazione del client OpenSSH
/etc/nologin - se questo file esiste, il sistema rifiuterà di consentire a chiunque non sia l'utente root. È meglio rimuovere e non utilizzare.
/etc/hosts.allow e /etc/hosts.deny - elenchi di controllo degli accessi (ACL)

In questo articolo ti mostreremo come installare, configurare e utilizzare OpenSSH su Ubuntu 16.04. SSH (Secure Shell) è un protocollo che consente l'accesso sicuro a una macchina remota mentre OpenSSH è un insieme di strumenti basati sul protocollo SSH. Oggi ti mostreremo come installare e configurare OpenSSH utilizzando Ubuntu 16.04 come sistema operativo.

Installazione di OpenSSH su Ubuntu 16.04

Per prima cosa installiamo OpenSSH. Aggiorna gli indici dei pacchetti utilizzando il seguente comando:

Sudo apt-get aggiornamento

Per installare l'applicazione server OpenSSH, così come altri pacchetti correlati, utilizzare il seguente comando:

Sudo apt-get install openssh-server

Tieni presente che il pacchetto server OpenSSH potrebbe essere già installato sul tuo sistema come parte del processo di installazione iniziale del server. In alternativa, puoi installare l'applicazione client OpenSSH utilizzando il seguente comando:

Sudo apt-get install openssh-client

Configurazione di OpenSSH su Ubuntu 16.04

Prima di apportare qualsiasi modifica alla configurazione di OpenSSH, è bene sapere come gestire il servizio OpenSSH sul tuo computer. Per avviare il servizio è possibile utilizzare il seguente comando:

Sudo systemctl avvia sshd.service

Per interrompere il servizio puoi utilizzare:

Sudo systemctl interrompe sshd.service

Per riavviare il servizio puoi utilizzare:

Sudo systemctl riavvia sshd.service

Per verificare lo stato del servizio puoi utilizzare:

Sudo systemctl stato sshd.service

Per abilitare il servizio durante l'avvio del sistema è possibile utilizzare:

Sudo systemctl abilita sshd.service

Per disabilitare il servizio durante l'avvio del sistema è possibile utilizzare:

Sudo systemctl disabilita sshd.service

Dopo aver apportato eventuali modifiche alla configurazione OpenSSH, è necessario riavviare il servizio affinché le modifiche abbiano effetto.

Il file di configurazione principale per l'applicazione server OpenSSH è /etc/ssh/sshd_config . Assicurati di eseguire il backup della configurazione originale prima di apportare qualsiasi modifica:

Sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.orig

Puoi modificare questo file con editor di testo secondo la tua scelta. La prima cosa che puoi fare è . Apri il file e trova la riga che definisce la porta di ascolto:

Cambialo in qualcos'altro. Ad esempio il 2022

Porto 2022

Salva il file e chiudilo. Quindi riavviare il servizio affinché le modifiche abbiano effetto.

Ora puoi provare a utilizzare il numero di porta specificato nel file di configurazione del server OpenSSH. Se riesci a connetterti al server tramite SSH con successo, puoi continuare con il passaggio successivo che consiste nel proteggere OpenSSH.

Proteggi OpenSSH su Ubuntu 16.04

#PermitRootLogin sì

e cambiarlo in:

PermitRootLogin n

Salvare le modifiche e riavviare il servizio affinché le modifiche abbiano effetto. La prossima volta che ti connetterai al server, potrai utilizzare l'utente SUDO appena creato.

Per proteggere il server, puoi anche disabilitare il controllo della password e i file . Inoltre, puoi.

Puoi controllare ulteriori opzioni di configurazione utilizzando la pagina man:

Amico sshd_config

oppure puoi visitare le pagine del manuale di OpenSSH su https://www.openssh.com/manual.html.

Questa sezione della Guida al server Ubuntu introduce una potente raccolta di strumenti per il controllo remoto e il trasferimento di dati tra computer in rete chiamati OpenSSH. Imparerai anche alcune delle impostazioni di configurazione possibili con Server OpenSSH applicazione e come modificarli sul tuo sistema Ubuntu.

OpenSSH è una versione disponibile gratuitamente della famiglia di protocolli Secure Shell (SSH). strumenti per controllare in remoto o trasferire file tra computer. Gli strumenti tradizionali utilizzati per eseguire queste funzioni, come telnet o rcp, non sono sicuri e trasmettono la password dell'utente in chiaro quando vengono utilizzati. OpenSSH fornisce un demone server e strumenti client per facilitare il controllo remoto sicuro e crittografato e le operazioni di trasferimento file, sostituendo di fatto gli strumenti legacy.

Il componente server OpenSSH, sshd , ascolta continuamente le connessioni client da qualsiasi strumento client. Quando si verifica una richiesta di connessione, sshd configura la connessione corretta a seconda del tipo di connessione dello strumento client. Ad esempio, se il computer remoto si connette con l'applicazione client ssh, il server OpenSSH imposta una sessione di controllo remoto dopo l'autenticazione. Se un utente remoto si connette a un server OpenSSH con scp , il demone del server OpenSSH avvia una copia sicura dei file tra il server e il client dopo l'autenticazione. OpenSSH può utilizzare molti metodi di autenticazione, tra cui password semplice, chiave pubblica e ticket Kerberos.

Installazione

L'installazione delle applicazioni client e server OpenSSH è semplice. Per installare le applicazioni client OpenSSH sul tuo sistema Ubuntu, utilizza questo comando al prompt del terminale:

sudo apt install openssh-client

Per installare l'applicazione server OpenSSH e i relativi file di supporto, utilizzare questo comando al prompt del terminale:

sudo apt install openssh-server

È inoltre possibile selezionare il pacchetto openssh-server per l'installazione durante il processo di installazione di Server Edition.

Configurazione

È possibile configurare il comportamento predefinito dell'applicazione server OpenSSH, sshd , modificando il file /etc/ssh/sshd_config . Per informazioni sulle direttive di configurazione utilizzate in questo file, è possibile visualizzare la pagina di manuale appropriata con il seguente comando, emesso al prompt del terminale:

uomo sshd_config

Ci sono molte direttive nel file di configurazione sshd che controllano cose come le impostazioni di comunicazione e le modalità di autenticazione. Di seguito sono riportati esempi di direttive di configurazione che possono essere modificate modificando il file /etc/ssh/sshd_config.

Prima di modificare il file di configurazione, è necessario fare una copia del file originale e proteggerla dalla scrittura in modo da avere le impostazioni originali come riferimento e da riutilizzare se necessario.

Copia il file /etc/ssh/sshd_config e proteggilo dalla scrittura con i seguenti comandi, inviati al prompt del terminale:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.original sudo chmod a-w /etc/ssh/sshd_config.original

Di seguito sono riportati esempi di direttive di configurazione che è possibile modificare:

    Per impostare OpenSSH in modo che sia in ascolto sulla porta TCP 2222 anziché sulla porta TCP predefinita 22, modifica la direttiva Port in questo modo:

    Per fare in modo che sshd consenta credenziali di accesso basate su chiave pubblica, è sufficiente aggiungere o modificare la riga:

    Autenticazione Pubkey sì

    Se la riga è già presente, assicurati che non sia commentata.

    Per fare in modo che il tuo server OpenSSH visualizzi il contenuto del file /etc/issue.net come banner di pre-accesso, aggiungi o modifica semplicemente la riga:

    Banner /etc/issue.net

    Nel file /etc/ssh/sshd_config.

Dopo aver apportato modifiche al file /etc/ssh/sshd_config, salvare il file e riavviare l'applicazione server sshd per effettuare le modifiche utilizzando il seguente comando al prompt del terminale:

sudo systemctl riavviare sshd.service

Sono disponibili molte altre direttive di configurazione per sshd per modificare il comportamento dell'applicazione server in base alle proprie esigenze. Tieni presente, tuttavia, se il tuo unico metodo di accesso a un server è ssh e commetti un errore nel configurare sshd tramite /etc /ssh /sshd_config, potresti ritrovarti bloccato fuori dal server al riavvio. Inoltre, se viene fornita una direttiva di configurazione errata, il server sshd potrebbe rifiutarsi di avviarsi, quindi fai molta attenzione quando modifichi questo file su un server remoto.

Abbiamo capito di cosa si tratta SSH e quali sono i suoi vantaggi, abbiamo implementato anche l'esempio più semplice SSH- server e cliente.

Oggi parlerò di impostazioni più dettagliate SSH- server.

Come dice la famosa frase, “in Linux tutto è un file", quindi da configurare SSH- server, è necessario e sufficiente modificare un file di configurazione. Il suo percorso completo/etc/ssh/sshd_config. Per modificare, apri questo file con diritti di superutente utilizzando qualsiasi editor di testo.

Prima di modificare, lo faremo per ogni evenienza. backup file:

Sudo cp /etc/ssh/sshd_config(,.bak)

Ora diamo un'occhiata al suo contenuto:

Sudo nano /etc/ssh/sshd_config

Dopo ogni modifica a questo file è necessario riavviare ssh- server per applicare le nostre modifiche.

Come possiamo vedere, ci sono molti parametri qui; tratteremo ciascuno di essi gradualmente.

Porta

Qui specifichiamo quale porta ascolterà il nostro server. Per impostazione predefinita ascolta 22 porta TCP/IP. Fatto interessante che è possibile specificare più porte. Per esempio:

AscoltaIndirizzo

La vista generale delle impostazioni può essere scritta come segue:

ListenAddress host | Indirizzo_IPv4 | Indirizzo_IPv6 IndirizzoAscolto :port

Specifica l'indirizzo di rete su cui il server “ascolterà”.
Se il server dispone di diverse interfacce di rete configurate per l'utilizzo diverso IP indirizzi, è possibile limitare l'accesso tramite questo parametro.
Ad esempio, sul server quanto segue 4 interfaccia di rete:

Eth0 – 192.168.0.1 eth1 – 192.168.0.2 eth2 – 192.168.0.3 eth3 – 192.168.0.4

Predefinito ssh- il server è in uno stato di attesa della connessione IP indirizzi. Se desideri che gli utenti possano accedere solo sulle interfacce 2 E 3 , allora dovresti fare questo:

Indirizzo di ascolto 192.168.0.2 Indirizzo di ascolto 192.168.0.3

Puoi anche specificare la porta qui. Per esempio:

AscoltaIndirizzo 192.168.0.2:222

Se la porta non è specificata, ssh ascolterò a questo indirizzo e
sulla porta specificata nell'opzione Porta. Se usi AscoltaIndirizzo senza specificare la porta, quindi l'opzione Porta deve essere preceduto da un'opzione AscoltaIndirizzo. Se non lo specifichi affatto AscoltaIndirizzo, quindi per impostazione predefinita il server è in ascolto su tutti gli indirizzi locali.

Indirizzo Famiglia

Indica quale famiglia IP gli indirizzi devono essere utilizzati dal servizio ssh. Opzioni possibili:
"Qualunque"- Qualunque
"ineto"(soltanto IPv4)
"inet6"(soltanto IPv6)
Predefinito - "Qualunque".

È opportuno, se possibile, limitare la famiglia di indirizzi trattati a quelli effettivamente utilizzati, ovvero se si utilizzano solo IPv4- disattivare IPv6, e viceversa.

Ad esempio, per risolvere IPv4 e divieto IPv6:

IndirizzoFamiglia inet

Protocollo

ssh può funzionare con i protocolli SSH1 E SSH2. Allo stesso tempo, l'uso di non sicuro SSH1 altamente sconsigliato. Forza ssh funziona solo con il protocollo SSH2 Puoi farlo:

Protocollo 2

PermettiRootLogin

Per impostazione predefinita, accedi al server remoto come utente radice nessuno lo vieta. Ma non è del tutto sicuro. Sarebbe invece più corretto accedere utilizzando il nome utente account e aumenta i tuoi privilegi usando il comando 'su -', o utilizzare 'sudo'.

Se la tua organizzazione ha diversi amministratori di sistema e tutti si connettono al server come superutente, non è sempre possibile scoprire quale amministratore si trova sul server. Pertanto, dopo aver disabilitato la possibilità di accedere direttamente sotto l'utente radice amministratori di sistema prima accederanno con il proprio account e solo dopo riceveranno i privilegi di superutente; Ciò renderà più semplice il controllo del server e delle azioni eseguite dagli amministratori di sistema.
Per disabilitare la funzione precedente, disabilitare il parametro PermettiRootLogin, impostando il valore "NO".

PermitRootLogin n

Permetti password vuote

Blocco delle password vuote

PermitEmptyPassword n

ConsentiUtenti, ConsentiGruppi

Per impostazione predefinita, qualsiasi utente del server può accedere. È meglio limitare la cerchia degli utenti a cui è consentito l'accesso ssh.
Ciò può essere utile quando crei un numero di utenti sul sistema, ma consenti l'accesso a ssh ne voglio solo alcuni.

Per fare ciò, nel file di configurazione sshd_config dovresti aggiungere utenti specifici che esistono sul server. Nell'esempio seguente questi sono gli utenti Giovanni, Pietro E Michael, a cui è consentito accedere al server. I nomi utente sono separati da spazi.

Autorizza utenti john peter michael

Quando si aggiungono tutti gli utenti presenti in un gruppo specifico, è necessario specificarlo come mostrato nell'esempio seguente. Anche i gruppi di utenti autorizzati ad accedere al server sono separati da uno spazio.

Ammettere gli amministratori sviluppatori di Groups

Nega utenti, Nega gruppi

Invece di consentire l'accesso a utenti o gruppi specifici, è anche possibile specificare utenti o gruppi a cui è negato l'accesso al server.
Per fare ciò, aggiungi al file di configurazione sshd_config parametro Nega utenti, in cui, separati da uno spazio, indicano gli utenti a cui è vietato l'accesso al server. Nell'esempio seguente questo è system apache e anche abbastanza reale Boris.

DenyUsers apache boris

Esiste anche un'opzione che consente di negare l'accesso non a singoli utenti, ma a interi gruppi a cui appartengono gli utenti. Questo è un parametro Nega gruppi e i gruppi sono indicati anche con uno spazio.

DenyGroups hacker di marketing

Tieni presente che puoi utilizzare combinazioni di parametri di divieto e autorizzazione: Nega utenti, Consenti utenti, Nega gruppi, E Consenti gruppi.

AccediGraceTime

Quando provi ad accedere utilizzando ssh sul server che hai 2 minuti per inserire nome utente e password. Se non lo fai, la connessione al server verrà persa. 2 i minuti di attesa per i dati di autorizzazione sono parecchi. Dovrebbe essere limitato a 1 minuti o addirittura fino a 30 secondi

Per fare ciò, modificare il parametro AccediGraceTime modificando il file sshd_config e indicare lì il tempo richiesto. Nell'esempio seguente lo è 1 minuto.

LoginGraceTime 1m

ClientAliveInterval

Disconnessione quando non c'è attività nella shell

Dopo aver effettuato con successo l'accesso al server, potresti voler rendere possibile la disconnessione automatica dopo che è trascorso un po' di tempo durante il quale non hai eseguito alcuna azione sulla console. Questo è comunemente indicato come tempo di inattività.

Utilizzando Bash, puoi raggiungere questo obiettivo cambiando variabile d'ambiente TMOUT.

IN OpenSSH ciò si ottiene mediante una combinazione di parametri ClientAliveCountMax E ClientAliveInterval nel file di configurazione sshd_config.

  • ClientAliveCountMax— indica la quantità massima checkalive messaggi inviati ssh- server da cui non riceve alcuna risposta ssh- cliente. L'impostazione predefinita è 3.
  • ClientAliveInterval— indica il tempo di attesa (timeout) in secondi. Dopo il tempo specificato ssh- il server invierà checkalive messaggio al cliente, aspettandosi una risposta da lui (risposta). L'impostazione predefinita è 0, ovvero, il server non invierà messaggi per la verifica.

Affinché il tuo ssh- il client si è disconnesso automaticamente dopo 10 minuti ( 600 secondi), dovresti apportare modifiche al file di configurazione sshd_config nel seguente modo:

ClientAliveInterval 600 ClientAliveCountMax 0

È tutto per ora. In linea di principio penso che questo sia già sufficiente per una buona configurazione e una maggiore sicurezza ssh. Nella parte successiva esamineremo alcuni altri parametri ssh- server e forse possiamo discutere dell'autenticazione basata su chiave.

In bocca al lupo a tutti e a presto sul nostro blog!




Superiore