Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

OpenSSH: cos'è e come si usa

OpenSSH è l'implementazione gratuita di dei protocolli SSH-1 e SSH-2. Installazione client e server, caratteristiche principali e utilizzo
OpenSSH è l'implementazione gratuita di dei protocolli SSH-1 e SSH-2. Installazione client e server, caratteristiche principali e utilizzo
Link copiato negli appunti

Come abbiamo accennato nelle scorse lezioni, OpenSSH è un'implementazione gratuita dei protocolli SSH-1 e SSH-2, reperibile al seguente indirizzo Web. È stato originariamente scritto da alcuni sviluppatori del progetto OpenBSD e reso disponibile con una licenza di tipo BSD. Sebbene sia stato progettato per sistemi operativi Unix-like, è ben presto divenuto comune anche per quelli commerciali, come Windows.

Nella maggior parte dei casi, OpenSSH funziona allo stesso modo in Windows e in Unix, anche se qualche piccola differenza è comunque presente. In questa lezione vedremo nel dettaglio l'installazione, le caratteristiche, così come l'uso stesso.

Caratteristiche di OpenSSH

OpenSSH è un'implementazione di SSH molto completa e comprende diverse features che elenchiamo di seguito:

  • programmi client per l'accesso remoto ed esecuzione di comandi remoti;
  • copia sicura di file attraverso la rete;
  • un server SSH altamente configurabile;
  • interfacce a riga di comando, per tutti i programmi, che facilitano l'esecuzione di script con strumenti standard di Unix (shell, Perry);
  • strumenti Unix standard (shell, Perl, ecc.);
  • numerosi algoritmi di crittografia e meccanismi di autenticazione selezionabili;
  • un agente SSH che memorizza le chiavi per facilitarne l'uso;
  • supporto per i proxy SOCKS;
  • supporto per l'inoltro di porte TCP e X11;
  • funzioni di cronologia e registrazione per facilitare il debugging;
  • file di configurazione di esempio /etc/ssh/ssh_config e /etc/ssh/sshd_config.

In questa lezione non tratteremo nello specifico queste funzionalità ma ci limitiamo a darne una panoramica generale per poi approfondirle nelle lezioni successive.

Installazione OpenSSH su Windows

Partiamo dal presupposto che se stiamo utilizzando un sistema operativo basato su Unix/Linux, come Ubuntu o macOS avremo già installato l'SSH. Per verificarlo possiamo aprire il Terminale e visualizzare la versione di SSH installata con il comando ssh -V.

Su Windows, invece, dobbiamo necessariamente installare OpenSSH per poter usufruire di SSH. L'installazione di OpenSSH può avvenire in due modi diversi. Il primo, mediante l'uso di Cygwin mentre il secondo, meno macchinoso del primo, ma solo per le versioni di Windows Server 2022, Windows Server 2019, Windows 10 (build 1809 e successive), tramite "Impostazioni -> App", quindi "Funzionalità Facoltative".

A questo punto dovremo cercare "Client OpenSSH" (e "Server OpenSSH") nella barra di ricerca delle "Funzionalità Facoltative" per installare OpenSSH, come già approfondito nella seconda lezione di questa guida.

Per installare OpenSSH tramite Cygwin è necessario installare preventivamente la libreria Cygwin. Cygwin viene utilizzato perché offre un modo semplice per installare una vasta collezione di software open source su Windows.

Cygwin è, in pratica, una raccolta di strumenti che consentono di compilare ed eseguire applicazioni Unix o Linux su un sistema operativo Windows, mediante un'interfaccia testuale simile a quella di Linux. Questa suite permette agli sviluppatori di migrare con una certa semplicità le applicazioni da Unix o Linux a sistemi basati su Windows.

Cygwin è disponibile al seguente indirizzo. Dopo aver scaricato l'eseguibile e averlo installato, assicuriamoci:

  • che C:\cygwin\bin sia nel PATH delle variabili di sistema;
  • di creare una variabile d'ambiente chiamata CYGWIN e assegnarle il valore ntsec tty.

Fatto ciò, aprendo Cygwin dobbiamo assicurarci di installare i seguenti pacchetti:

  • openssh - la suite completa comprensiva dei file di supporto.
  • cygrunsrv - necessario per eseguire sshd come servizio di Windows.

In dettaglio, nella barra di ricerca presente in Cygwin digitiamo prima openssh e completiamo la sua installazione, dopo cygrunsrv.

Fatto questo, dovremmo aver installato i tool necessari per procedere con l'installazione di OpenSSH.

Usare un Client SSH su Windows

Una volta installato OpenSSH su Windows, sarà possibile, al pari di come si può fare su Unix/Linux, adoperare i programmi client ssh, scp e sftp. Per esempio, una normale connessione SSH, può avvenire seguente modo:

# log-in al server.esempio.it come utente vito
ssh -l vito server.esempio.it
# copiare il file chiamato prezzi.txt dal server di esempio alla macchina locale
scp prezzi.txt server.esempio.it

L'unica difficoltà che si può riscontrare su Windows consiste nell'individuazione della directory ~/.ssh che è quella in cui è stato salvato il file .

Su Unix sappiamo che la directory home si trova di solito in /home/nome_utente. Se si utilizza una shell di comando standard di Windows (ad esempio, cmd) o se si sfogliano i file con Windows Explorer, potremmo chiederci come arrivare alla directory ~/.ssh.

A questo proposito è sufficiente digitare questo comando da una shell di comando di Windows, per individuare la corretta posizione della suddetta directory:

C:\>cygpath -w ~
Il risultato sarà qualcosa del tipo:
C:\cygwin\home\vito

Il comando cygpath converte i percorsi di Cygwin in percorsi di Windows e la sola tilde (~) rappresenta il path della nostra home directory Cygwin. Pertanto, i file del client SSH saranno memorizzati all'interno della directory C:\cygwin\home\vito\.ssh\.

Configurare un Server SSH su Windows

Il server SSH, sshd, viene avviato sotto Cygwin come servizio standard di Windows, chiamato (non a caso) Cygwin SSH Service. Cygwin mette a disposizione uno script, chiamato ssh-host-config, per configurare questo servizio.

Assicuriamoci di aver impostato correttamente sia il path che le variabili d'ambiente per OpenSSH e Cygwin, per poi digitare tramite il Prompt di Windows:

C:\> ssh-host-config

Rispondiamo positivamente a tutte le domande e, al termine, il servizio di Server SSH dovrebbe essere pronto per essere avviato. Apriamo adesso il pannello di controllo dei Servizi di Windows (scriviamo nella barra di ricerca di Windows "Servizi" per trovarlo velocemente) e cerchiamo il servizio Cygwin SSHD Service. Avviamolo.

In alternativa, possiamo anche farlo partire mediante riga di comando:

C:\> net start sshd

E' consigliabile impostare l'avvio del servizio su "Automatico", in modo che venga eseguito ogni volta che si avvia il computer. Per interrompere il servizio, possiamo utilizzare nuovamente il pannello di controllo "Servizi" o digitare:

C:\> net stop sshd

Quelli che abbiamo visto sono dei semplici comandi che ci permettono di gestire l'avvio e l'arresto del servizio di Server SSH. Chiaramente, la configurazione del file ssh-host-config è molto più complessa di quanto riportato e possono essere gestite numerose funzionalità del protocollo SSH (che saranno presentate in una lezione a parte), come Cryptographic policy, Port forwarding, Verbose logging etc.

Differenti file di configurazione

Abbiamo visto come installare un client e un server OpenSSH. Sia per il Client che per il Server di OpenSSH è possibile creare dei file di configurazione che ci permettono di aggiungere o modificare delle funzionalità specifiche.

Un esempio classico di file di configurazione lato client, riguarda l'esigenza di memorizzare tutti gli indirizzi IP remoti, i diversi nomi utente, le porte e le varie opzioni di collegamento. Proprio per evitare che per ogni esigenza di collegamento remoto (in genere su più server distinti) si debbano memorizzare e inserire dati differenti tra loro.

A questo proposito ci viene in aiuto OpenSSH che consente di impostare in uno specifico file di configurazione (per utente) le opzioni SSH necessarie per il collegamento remoto. Quindi, la creazione di un particolare file di configurazione ci permetterebbe non solo di risparmiare tempo ma anche di evitare la memorizzazione di molteplici dati di collegamento.

Di rimando, anche lato server è possibile configurare diverse impostazioni di collegamento. Per esempio, una configurazione comune per un server SSH riguarda l'autenticazione mediante il sistema di chiave pubblica e privata.

Conclusioni

In questa lezione abbiamo visto come avviare un servizio Server SSH e come adoperare un Client SSH. Abbiamo inoltre appreso che, sia il Client che il Server di OpenSSH, dispongono di file di configurazione che possono essere modificati per gestire o aggiungere particolari impostazioni di collegamento.

Nelle prossime lezioni di questa guida ci occuperemo di presentare, anche mediante dei casi d'uso, qualcuna di queste configurazioni.

Ti consigliamo anche