Il protocollo SSH, acronimo di Secure Shell, permette di stabilire una sessione remota tramite interfaccia a riga di comando con un altro host. Diversamente rispetto ad altri strumenti simili, l’intera comunicazione – compresa l’autenticazione – avviene in forma cifrata.
Se dovete amministrare un sistema Linux a distanza con ogni probabilità vi è la necessità di utilizzare un client SSH.
La porta standard sulla quale viene posto in ascolto il server SSH è la TCP/UDP 22 ma come nel caso di qualunque altro servizio è possibile utilizzare altre porte di comunicazione.
Un server SSH è spesso presente anche su router, access point e dispositivi per il networking in generale, device IoT e dispositivi industriali; a titolo esemplificativo si usa anche per comunicare – almeno per impostazione predefinita – con i single-board computer Raspberry.
Cos’è OpenSSH
La prima versione del software SSH fu sviluppata nel 1995 da Tatu Ylönen, all’epoca ricercatore presso l’Università della tecnologia di Helsinki (Finlandia), con l’obiettivo di sostituire modalità di connessione poco sicure come rlogin e Telnet.
Dopo aver creato una sua azienda, Ylönen rilasciò una seconda versione chiamata SSH-2 che però questa volta si presentava come un progetto proprietario e commerciale.
Nel 1999, nel frattempo, nacque OSSH ovvero un’implementazione aperta di SSH: il software fu sviluppato partendo dall’ultima versione open source di SSH.
Mentre OSSH divenne obsoleta piuttosto rapidamente, a partire dal suo codice fu realizzato OpenSSH che dai primi anni 2000 fino ad oggi è rimasta la soluzione più popolare con una vasta gamma di sistemi operativi che la supportano direttamente.
Da qualche tempo anche Windows 10 supporta OpenSSH e Windows 11 guarda nella stessa direzione.
In Windows 10 e 11 il client OpenSSH è ora installato in modo predefinito: per accorgersene basta scrivere cmd
quindi digitare ssh
.
I due sistemi operativi Microsoft permettono però di installare anche un server OpenSSH: in questo modo è possibile collegarsi da remoto alla macchina usando un qualunque client.
Come usare OpenSSH in Windows
Per collegarsi a un server SSH remoto utilizzando il client OpenSSH presente in Windows 10 e Windows 11 basta aprire una finestra del prompt dei comandi o di PowerShell digitando cmd
nella casella di ricerca oppure premendo Windows+X
quindi scegliendo Windows PowerShell o Terminale Windows.
Il comando per stabilire una connessione remota è il seguente:
Al posto di indirizzo-ip
va indicato l’indirizzo privato o pubblico della macchina alla quale ci si vuole collegare. La stringa nomeutente
va invece sostituita con l’account utente disponibile sulla macchina remota e del quale si conosce la password corrispondente.
In questo modo è possibile connettersi via OpenSSH a qualunque macchina ove sia in esecuzione un componente server SSH.
Digitando l’indirizzo IP di una macchina Windows, al posto di nomeutente
deve essere indicato il nome di un account presente sullo stesso sistema. Il client OpenSSH consente di interagire con il sistema remoto utilizzando gli stessi diritti dell’account utente impostato su quella stessa macchina.
Alla comparsa del quesito Are you sure you want to continue connecting? digitare yes e premere il tasto Invio.
Per chiudere la connessione SSH basta digitare exit
e premere Invio.
Seguendo le indicazioni riportate da Microsoft in questa pagina è possibile creare un file settings.json
contenente le preferenze di connessione che verranno automaticamente utilizzate per le successive sessioni di lavoro.
Come trasferire file da un server SSH con un’interfaccia grafica
Installando un client che supporta SSH File Transfer Protocol (SFTP) come FileZilla (scaricare e usare la versione portabile in formato Zip) è possibile copiare velocemente file da e verso il sistema sul quale è in esecuzione il server SSH.
Per procedere in tal senso basta avviare il client FTP FileZilla, fare clic sull’icona Apri il gestore siti in alto a sinistra, selezionare Nuovo sito quindi indicare l’indirizzo IP dell’host remoto nel campo Host.
In corrispondenza del menu a tendina Protocollo va selezionato SFTP – SSH File Transfer Protocol.
Scendendo verso il basso si può scegliere Normale quindi indicare nome utente e password dell’account presente sulla macchina remota.
Installare il server OpenSSH in Windows
In Windows 10, Windows 11, Windows Server 2019 e Windows Server 2022 OpenSSH si può installare anche in versione server.
Per procedere in tal senso si può scrivere Funzionalità facoltative nella casella di ricerca del sistema operativo quindi cliccare su Aggiungi una funzionalità o Aggiungi una funzionalità facoltativa.
Nella schermata successiva è sufficiente spuntare la casella Server OpenSSH quindi cliccare sul pulsante Installa o Avanti e poi Installa a seconda della versione di Windows in uso.
Al termine dell’installazione di OpenSSH server si può premere Windows+X
quindi scegliere Windows PowerShell (amministratore) oppure Terminale Windows (Admin).
Nella finestra di PowerShell va quindi incollato quanto segue:
Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'
if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) {
Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..."
New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
} else {
Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists."
}
I vari comandi permettono di avviare il server OpenSSH sulla macchina Windows, configurare il servizio in maniera tale che sia eseguito a ogni avvio del sistema operativo e creare una regola firewall nella configurazione di Windows Firewall per accettare le richieste di connessione in ingresso sulla porta TCP 22.
Come disinstallare OpenSSH server in Windows
Per disinstallare il modulo server di OpenSSH da Windows, suggeriamo di rimuovere la regola firewall precedentemente creata impartendo i comandi seguenti da una finestra PowerShell aperta con i diritti di amministratore:
Remove-NetFirewallRule -DisplayName "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue
Remove-NetFirewallRule -DisplayName "OpenSSH SSH Server (sshd)" -ErrorAction SilentlyContinue
Dopo aver riavviato il sistema si deve tornare nella finestra Funzionalità facoltative, cliccare su Server OpenSSH nell’elenco Funzionalità installate quindi sul pulsante Disinstalla.