GNU/Linux >> Linux Esercitazione >  >> Linux

Le 10 principali funzionalità SSH che DEVI conoscere per essere più produttivo

Questo articolo continua la nostra serie di articoli su Linux e copre molte utili funzionalità e trucchi SSH per migliorare la produttività quotidiana. I nostri elementi visivi ti aiuteranno a comprendere l'impostazione SSH, la gestione dei file di configurazione, l'autenticazione, l'utilizzo di più chiavi SSH e, naturalmente, il port forwarding SSH locale e remoto. Diventa un maestro SSH in 10 minuti!

Cos'è SSH

Secure Shell, o SSH, è un protocollo di rete che ti consente di connetterti in modo sicuro a un server remoto e di utilizzare un'interfaccia console per gestirlo.

Quando stabilisci una connessione SSH, il server avvia una sessione di shell per te. Successivamente, puoi digitare i comandi nel tuo client SSH e verranno eseguiti su un server remoto.

Gli amministratori di sistema utilizzano questo protocollo per connettere e gestire server Linux remoti in modo sicuro.

Come funziona SSH

Come qualsiasi applicazione di rete, SSH utilizza due componenti:

  • Client SSH è un'applicazione che installi sul computer che utilizzerai per connetterti al computer basato su Linux della rete. Il client SSH stabilisce una connessione crittografata tra il tuo computer e il server remoto.
  • Server SSH è un'applicazione server in ascolto sulla porta TCP/IP 22 per le connessioni client. Se il client ha fornito le credenziali corrette, il server SSH crea una nuova sessione utente e consente di eseguire comandi remoti.

Autenticazione SSH

SSH consente di utilizzare più metodi di autenticazione diversi. I più utilizzati sono:

  • Autenticazione tramite password – ti viene richiesto il nome utente e la password per accedere all'host remoto.
  • Autenticazione basata su chiave SSH – stai utilizzando chiavi pubbliche e private SSH per l'autenticazione utente.

Autenticazione basata su chiave SSH

Questo metodo di autenticazione è considerato più sicuro rispetto all'utilizzo delle password. Ecco come funziona:

Algoritmo di autenticazione basata su chiave SSH:

  • Il client avvia la connessione SSH.
  • Il server invia un messaggio casuale.
  • Il client crittografa il messaggio ricevuto utilizzando una chiave SSH privata e lo rimanda al server.
  • Il server decodifica il messaggio del client utilizzando una chiave SSH pubblica . Se il messaggio è lo stesso, il server concede l'accesso.

L'utilizzo dell'autenticazione tramite password in SSH non è sicuro. Se stai ancora utilizzando l'autenticazione tramite password, devi cambiarla in Autenticazione basata su chiave SSH il prima possibile.

Come installare un client SSH

Nella maggior parte dei sistemi Linux e macOS, il server SSH è già installato disponibile per te per impostazione predefinita. Ma se stai giocando con Linux nella tua macchina virtuale, potrebbe essere necessario installarlo.

Ubuntu

Per le distribuzioni Linux basate su deb, puoi installare il client SSH utilizzando i seguenti comandi:

sudo apt-get update
sudo apt-get -y install openssh-client

CentOS, Fedora, RedHat

Per le distribuzioni Linux basate su yum, puoi installare il client SSH utilizzando i seguenti comandi:

sudo yum -y install openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd

Finestre

Per il sistema operativo Windows, PuTTY è diventato un client SSH standard di fatto. Per installarlo, scarica il programma di installazione MSI dal link sopra e segui le istruzioni da Come installare PuTTY su Windows.

Ecco il modo automatizzato usando Chocolatey. Apri la console di PowerShell in modalità "Esegui come amministratore") ed esegui i seguenti comandi:

Set-ExecutionPolicy RemoteSigned

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

choco install putty -y

Come installare un server SSH

Nella maggior parte dei sistemi Linux e macOS, il client SSH è già disponibile per te per impostazione predefinita. Ma se stai giocando con Linux nella tua macchina virtuale, potrebbe essere necessario installarlo.

Server SSH – Ubuntu

Per le distribuzioni Linux basate su deb, puoi installare il client SSH utilizzando i seguenti comandi:

sudo apt-get update
sudo apt-get -y install openssh-server
sudo systemctl enable sshd
sudo systemctl start sshd

Server SSH – CentOS, Fedora, RedHat

Per le distribuzioni Linux basate su yum, puoi installare il client SSH utilizzando i seguenti comandi:

sudo yum -y install openssh
sudo systemctl enable sshd
sudo systemctl start sshd

Server SSH – Windows

Il server SSH non può essere installato su Windows. Nel mondo Windows, devi utilizzare Desktop remoto e WinRM per controllare i server Windows remoti.

Crea chiave SSH

Non appena disponi del client SSH, puoi creare chiavi SSH private e pubbliche utilizzate per l'autenticazione basata su chiavi SSH. Per creare una chiave SSH, esegui il seguente comando nel terminale:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Questo comando creerà una coppia di chiavi RSA da 4 Kb:

  • ~/.ssh/id_rsa – Chiave privata SSH.
  • ~/.ssh/id_rsa.pub – Chiave pubblica SSH.

Importante: Il file della chiave privata SSH non deve mai essere mostrato o inviato a nessuno.

Configura l'autenticazione basata su chiave SSH

Per configurare l'autenticazione basata su chiave SSH sul server, è necessario completare i seguenti passaggi:

  • Accedi al server.
  • Vai alla home directory dell'utente.
  • Modifica file ~/.ssh/authorized_keys e incolla il contenuto della chiave pubblica file lì.
  • Salva le modifiche.

~/.ssh/authorized_keys può contenere tutti i record di file di chiave pubblica necessari. Quindi, molte persone diverse possono connettersi al server utilizzando lo stesso nome di accesso ma i loro file di chiave privata.

Come connettersi utilizzando SSH

Puoi connetterti a un server Linux remoto utilizzando un client SSH digitando il seguente comando:

ssh remote_username@host_ip_address

Utilizza chiavi SSH diverse per server diversi

È una situazione diffusa in cui potrebbe essere necessario utilizzare diversi file di chiavi SSH private per accedere a server diversi. Ci sono diversi modi per farlo.

Specifica SSH chiave nel comando di connessione

Per specificare una chiave privata richiesta come parte del comando di connessione SSH, usa -i bandiera:

ssh -i ~/.ssh/another_private_key remote_username@host_ip_address

Utilizza un agente SSH

Se non hai troppe chiavi private, puoi utilizzare un agente SSH.

SSH Agent è un programma che carica la tua chiave SSH privata in memoria e la usa per superare l'autenticazione SSH.

Linux

Avvia ssh-agent in background:

eval "$(ssh-agent -s)"

Per aggiungere le tue chiavi SSH all'agente, utilizza i seguenti comandi:

ssh-add -K ~/.ssh/id_rsa
ssh-add -K ~/.ssh/another_private_key

Finestre

La distribuzione PuTTY contiene Pagent, che si trova nella barra delle applicazioni e svolge lo stesso ruolo. Fai clic con il pulsante destro del mouse su Pagent e aggiungi la tua chiave SSH.

Ora, il client SSH utilizzerà tutte le chiavi private caricate una per una per passare l'autenticazione durante la connessione SSH.

File di configurazione SSH

Un altro modo utile per configurare i parametri del client SSH è tramite il ~/.ssh/config file.

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
Host exceptional.com
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/another_private_key

Nell'esempio sopra, stiamo utilizzando l'impostazione predefinita ~/.ssh/id_rsa file della chiave privata per tutti i server, ad eccezione di exceptional.com server. Per il exceptional.com server, utilizzeremo ~/.ssh/another_private_key file.

Agente SSH e inoltro chiavi

Un'altra funzionalità SSH preferita che utilizzo quotidianamente è l'inoltro della chiave SSH. Ti consente di utilizzare le tue chiavi SSH locali per connetterti a server diversi.

Puoi abilitare l'inoltro della chiave SSH durante l'esecuzione del client SSH specificando -T bandiera:

ssh -T remote_username@host_ip_address

Oppure puoi abilitare permanentemente questa configurazione su ~/.ssh/config file specificando ForwardAgent yes :

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_rsa
  ForwardAgent yes

Inoltro porta SSH

Il protocollo SSH ti consente di inoltrare non solo la comunicazione dell'agente SSH attraverso un canale SSH sicuro, ma qualsiasi traffico TCP.

Se devi inoltrare il traffico UDP, utilizza nc in combinazione con SSH.

Esistono due tipi di opzioni di port forwarding.

Inoltro alla porta locale

Il modo migliore per spiegare il port forwarding SSH locale è dare un'occhiata al diagramma seguente.

In questo diagramma, Host di salto il server ha una connettività privata al server Amazon RDS PostgreSQL.

Il cliente laptop può connettersi al server Jump Host utilizzando il protocollo SSH.

Il proprietario del cliente laptop sta cercando un modo per connettersi all'istanza Amazon RDS .

La funzione di inoltro della porta locale SSH consente di associare una porta al client computer portatile. Il traffico dalla porta collegata viene inoltrato tramite il Host di salto server a un'istanza Amazon RDS .

Di conseguenza, devi connetterti all'istanza RDS dal client laptop, devi configurare pgsql al laptop per connettersi a localhost:15432 .

Ecco come devi stabilire una connessione SSH al Host Jump dal client Linux o macOS portatile:

ssh -L 127.0.0.1:15432:rds-endpoint-url:5432 ec2-user@jump_host_ip

Se utilizzi PuTTY, devi apportare modifiche in Connessioni – SSH – Tunnel prima di connettersi al Jump Host.

Inoltro porta remoto

Il port forwarding remoto SSH è una funzionalità un po' più interessante che risolve il problema opposto. Ti consente di associare la porta sul server ssh remoto e inoltrare il traffico in arrivo su quella porta alle reti dietro l'host client SSH.

Ecco un esempio.

Nel nostro esempio, abbiamo un server isolato , che non ha accesso a Internet, e il cliente laptop, che stiamo utilizzando per connetterci al Host Jump .

Traffico tra Jump HostServer isolato non è limitato.

Dobbiamo consentire il server isolato per connettersi a Internet. Come possiamo farlo?

Ad esempio, possiamo avviare un container Docker con proxy Squid sul laptop client sulla porta 8080. Quindi possiamo connetterci a Jump Host usando SSH. La funzione di inoltro della porta remota serve per associare la porta 8081 su Host di salto per inoltrare il traffico al cliente porta laptop 8080 .

Di conseguenza, il server isolato potrà utilizzare http://jump_host_ip:8081 come server proxy.

Per abilitare il port forwarding remoto durante la connessione SSH su Linux o macOS:

ssh -R 8081:localhost:8080 ec2-user@jump_host_ip

Per host PuTTY e Windows:

Riepilogo

In questo articolo, ho trattato molte utili funzionalità SSH, che sto utilizzando nel mio lavoro quotidiano. Spero che inizierai a usarli anche tu. Se qualcosa non è chiaro, per favore, contattami nella sezione commenti qui sotto. Sarò più che felice di aiutarti.

Se hai trovato utile questo articolo, sentiti libero di aiutarmi a diffonderlo nel mondo!


Linux
  1. Che cos'è l'hosting VPS? Tutto quello che devi sapere sui server privati ​​virtuali

  2. 20 Comandi OpenSSL Esempi che devi conoscere

  3. [Linux]:le 12 principali funzionalità di sicurezza da abilitare nel server SSH!

  4. Come eseguire Ssh su un server utilizzando un altro server??

  5. Server Ubuntu Cosa devi sapere

20 cose essenziali da sapere se sei su Nginx Web Server

Tutto quello che devi sapere su Linux Ubuntu Server

Tutto ciò che devi sapere su Linux OpenSSH Server

CentOS vs Ubuntu:devi conoscere questi 15 fatti fondamentali

I 50+ migliori comandi Linux che DEVI conoscere

I 10 migliori dock Linux che DEVI provare nel 2020