Come installare OpenSSH su Windows

Fino a poco tempo fa, se si desidera utilizzare SSH su Windows, è necessario fare affidamento su client di terze parti come PuTTY o installare pacchetti server SSH da fonti simili.

Tuttavia, l’aggiornamento di aprile 2018 (versione 1803) ha introdotto OpenSSH come funzionalità integrata. Finché esegui versioni di Windows supportate, puoi installare i componenti client e server OpenSSH come funzionalità facoltative.

Pertanto, in questo articolo tratteremo i prerequisiti, i passaggi completi per installare OpenSSH utilizzando vari metodi e come iniziare.

Se volete continuare a leggere questo post su "[page_title]" cliccate sul pulsante "Mostra tutti" e potrete leggere il resto del contenuto gratuitamente. ebstomasborba.pt è un sito specializzato in Tecnologia, Notizie, Giochi e molti altri argomenti che potrebbero interessarvi. Se desiderate leggere altre informazioni simili a [page_title], continuate a navigare sul web e iscrivetevi alle notifiche del blog per non perdere le ultime novità.

Seguir leyendo


Sommario

Come installare OpenSSH

Prima di iniziare, ti consigliamo di assicurarti che i seguenti requisiti siano soddisfatti:

Funzionalità opzionali (GUI)

Il modo più semplice per installare OpenSSH su Windows è dalla pagina Funzionalità opzionali nelle Impostazioni di Windows.

  1. Premi Win + I e vai su App > Funzionalità opzionali .
  2. Fare clic su Visualizza funzionalità nella sezione Aggiungi una funzionalità facoltativa .
  3. Selezionare OpenSSH Client e OpenSSH Server dall’elenco e premere Avanti > Installa.
  4. Dopo aver installato i componenti, premi Win + R, digita services.msc e premi Invio.
  5. Individua qui i servizi OpenSSH SSH Server e OpenSSH Authentication Agent.
  6. Fare doppio clic su di essi e avviare questi servizi. Se lo desideri, puoi anche modificare il tipo di avvio in Automatico . Salva le modifiche in seguito.
  7. Successivamente, premi Win + R, digita wf.msc e premi Invio.
  8. Nella sezione Regole in entrata, assicurati che la regola OpenSSH SSH Server (sshd) sia abilitata.
  9. La configurazione di base è completa. Controlla la sezione Inizia con OpenSSH per ulteriori passaggi. Puoi anche seguire gli stessi passaggi per disinstallare OpenSSH, se necessario.

PowerShell

Se vuoi essere più efficiente, puoi anche eseguire gli stessi passaggi di cui sopra in una finestra di PowerShell con privilegi elevati.

  1. Premi Win + R, digita powershell e premi CTRL + Maiusc + Invio.
  2. Innanzitutto, assicurati che i componenti OpenSSH siano disponibili:
    Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
  3. Successivamente, installa i componenti client e server OpenSSH:
    Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
    Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
  4. Avvia i servizi sshd e ssh-agent e cambia il loro tipo di avvio in Automatico come tale:
    Set-Service -Name sshd -StartupType 'Automatic' -Status Running
    Set-Service -Name ssh-agent -StartupType 'Automatic' -Status Running
  1. Successivamente, configura la regola del firewall di Windows necessaria per il traffico SSH:
    New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
  2. Ora che la configurazione è completa, puoi iniziare a utilizzare SSH. Fai riferimento alla sezione Inizia con OpenSSH se hai bisogno di aiuto con questo.
  3. Inoltre, se vuoi disinstallare i componenti di OpenSSH, ecco i comandi necessari:
    Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
    Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

GitHub (MSI)

Se hai scaricato il pacchetto OpenSSH da GitHub, puoi installare i componenti utilizzando MSI Installer con msiexec /i .

  • Ad esempio, se il file si trova nella directory corrente, utilizzare
    msiexec /i openssh.msi
  • Se il file si trova, diciamo, nella cartella dei download, usa
    msiexec /i C:usersanupdownloadsopenssh.msi
  • Per disinstallare OpenSSH, utilizzare
    msiexec /x
  • Diciamo che il programma di installazione si trova nella directory corrente e si desidera installare o rimuovere solo determinati componenti. È possibile utilizzare i seguenti comandi come richiesto:
    msiexec /i openssh.msi ADDLOCAL=Client
    msiexec /i openssh.msi ADDLOCAL=Server
    msiexec /i openssh.msi REMOVE=Client
    msiexec /i openssh.msi REMOVE=Server

Dopo aver installato i componenti, attenersi alla seguente procedura per aggiornare la variabile PATH di sistema :

  1. Premi Win + R, digita systempropertiesadvanced e premi Invio.
  2. Fare clic su Variabili d’ambiente. Nella sezione Variabili di sistema, seleziona Percorso e fai clic su Modifica .
  3. Controlla %systemroot%System32openssh qui. Se non è presente, fare clic su Nuovo e aggiungerlo all’elenco. Si noti che questo è il percorso di installazione predefinito. Se hai installato OpenSSH su un percorso diverso, modifica il valore di conseguenza per questo passaggio.
  4. Premere Ok > Ok per salvare le modifiche.

Ora puoi eseguire Get-Service -Name ssh* in PowerShell per verificare che i componenti siano stati installati correttamente. Se devi anche avviare i servizi richiesti o aprire le porte, fai riferimento a una delle sezioni precedenti per i passaggi.

Infine, se desideri utilizzare altri metodi come Winget o Chocolatey, ti consigliamo di controllare il wiki di OpenSSH su GitHub. Oltre alle istruzioni di installazione, ha anche vari esempi di utilizzo e manuali che potresti trovare utili.

Configurazione del server OpenSSH

Per impostazione predefinita, il server OpenSSH (sshd) in Windows legge i dati di configurazione da %programdata%sshsshd_config . In questo file sono elencate numerose opzioni di configurazione, ma poiché l’implementazione Windows di OpenSSH è ancora abbastanza nuova, al momento sono supportate solo determinate configurazioni.

Di seguito abbiamo elencato alcune modifiche di configurazione comunemente apportate per riferimento. Ti consigliamo di controllare la guida alla configurazione del server OpenSSH di Microsoft o quella su GitHub per l’elenco completo delle opzioni. Inoltre, non dimenticare di riavviare il servizio sshd per applicare le modifiche apportate.

  1. Rimuovere il commento dalla riga Port e modificare il valore se si desidera modificare la porta SSH. Dovrai anche aggiungere una regola firewall per consentire il traffico in entrata su detta porta.
  2. Cambia ListenAddress da 0.0.0.0 a qualcos’altro se vuoi solo ascoltare un indirizzo IP specifico. Aggiungere più righe ListenAddress allo stesso modo se si desidera ascoltare più indirizzi IP.
  3. Modificare GSSAPIAuthentication su yes se si desidera utilizzare l’autenticazione Kerberos.
  4. Aggiungere le direttive AllowGroups , AllowUsers , DenyGroups e DenyUsers per controllare quali gruppi e utenti possono accedere al server SSH.
    • Se lavori con utenti e gruppi di dominio, controlla i seguenti esempi per riferimento al formato:
      DenyUsers [email protected]
      DenyUsers tnt*
      AllowGroups tntsshclients tntserveradmins
    • Se hai a che fare con utenti e gruppi di gruppi di lavoro, controlla invece questi esempi:
      AllowUsers [email protected]
      AllowGroups sshclients
  5. Infine, puoi utilizzare il seguente comando in PowerShell per impostare la shell OpenSSH predefinita su PowerShell anziché sul prompt dei comandi :
    New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Inizia con OpenSSH

È possibile utilizzare uno dei metodi sopra elencati per configurare un altro sistema Windows come client, server o entrambi OpenSSH. E se non conosci SSH, ecco alcuni passaggi di base per iniziare:

  1. Innanzitutto, premi Win + R, digita sysdm.cpl e premi Invio.
  2. Verifica qui se sei un utente di un gruppo di lavoro o di un dominio.
  3. Premi Win + R, digita powershell e premi Invio.
  4. Se sei un utente di un gruppo di lavoro, immetti il ​​seguente comando e vai al passaggio 6:
    ssh user@host
  5. Se sei un utente di dominio, inserisci uno dei seguenti comandi:
    ssh -l user@domain host
    ssh domainuser@host
    ssh user@domain@host
    ssh user@host
  1. Al primo accesso, dovrai confermare che l’host è attendibile. Se si immette Sì, l’host verrà aggiunto all’elenco degli host conosciuti.
  2. Ora, inserisci la password dell’account host e premi Invio.

L’autenticazione basata su password va generalmente bene, ma idealmente dovresti utilizzare metodi di autenticazione ancora più sicuri come Kerberos e chiavi SSH. Per Kerberos, seguire i passaggi elencati di seguito:

  1. Sul server aggiunto al dominio, vai a %programdata%ssh .
  2. Apri il file sshd_config con un editor di testo.
  3. Rimuovere il commento dalla riga GSSAPIAuthentication, impostarla su yes e salvare le modifiche.
  4. In Powershell, utilizzare i seguenti comandi per riavviare il servizio sshd e applicare le modifiche dall’alto:
    net stop sshd
    net start sshd
  5. Ora, sul client Windows che ha effettuato l’accesso come utente di dominio, inserisci ssh -K hostname .

Autenticazione con chiave SSH

Quando ci si connette tra domini, l’autenticazione basata su password non è consigliata in quanto è vulnerabile alla forzatura bruta. Invece, dovresti usare l’autenticazione con chiave pubblica. Questo utilizza algoritmi crittografici per generare un file di chiave pubblico e uno privato.

La chiave pubblica di un utente viene archiviata sul server SSH e viene confrontata con la chiave privata lato client per l’autenticazione. Finché la chiave privata è protetta adeguatamente, questo metodo di autenticazione è molto più sicuro.

Dovrai generare la coppia di chiavi sul sistema client, creare un file di chiavi autorizzate sul server e archiviare la chiave pubblica del client in questo file. Per fare ciò, iniziare con i seguenti passaggi sul sistema server:

  1. Premi Win + R, digita powershell e premi CTRL + Maiusc + Invio.
  2. Crea il file administrators_authorized_keys.
    • Per gli utenti del gruppo Administrators:
      New-Item -Type File -Path C:ProgramDatasshadministrators_authorized_keys
    • Per utenti ordinari:
      New-Item -Type File -Path C:Usersusername.sshadministrators_authorized_keys
  3. Nel nostro caso, abbiamo creato il file utilizzando un account amministratore. Se stai utilizzando un account standard, modifica il percorso del file di conseguenza nel resto dei comandi.
  4. Impostare i permessi di accesso per il file delle chiavi con:
    get-acl C:ProgramDatasshssh_host_dsa_key | set-acl C:ProgramDatasshadministrators_authorized_keys

Ora avvia una finestra di PowerShell con privilegi elevati sul sistema client e segui questi passaggi:

  1. Utilizzare cd ~/.ssh per accedere alla directory .ssh e generare la coppia di chiavi con ssh-keygen .
  2. Quando viene richiesto il percorso del file, premere Invio per utilizzare il valore predefinito:
    C:Usersusername.ssh
  3. Aggiungi una passphrase per la tua chiave privata se desideri migliorarne ulteriormente la sicurezza.
  4. Ora, modifica i valori utente e host ed esegui i comandi mostrati di seguito. Aggiungerà la chiave pubblica del client al file delle chiavi autorizzate sul server.
    • $public_key = Get-Content ~/.ssh/id_rsa.pub
    • ssh user@host "'$($public_key)' | Out-File C:ProgramDatasshadministrators_authorized_keys -Encoding UTF8 -Append"
  5. Inserisci la tua password per approvare l’operazione. Ora sarai in grado di connetterti utilizzando l’autenticazione con chiave pubblica.

Risoluzione degli errori comuni

Errori SSH come Port 22 Connection Refused o Connection Timed Out sono piuttosto comuni. Se hai seguito i passaggi di questo articolo, i passaggi di base come garantire che i servizi SSH siano in esecuzione, riavviarli, consentire il traffico SSH attraverso il firewall, aggiungere SSH al PATH di sistema, ecc., saranno già trattati.

Oltre a questi, ecco alcuni altri passaggi per la risoluzione dei problemi che vale la pena provare:

  • Innanzitutto, assicurati che i passaggi sopra menzionati vengano eseguiti anche sul sistema remoto.
  • Riprova e assicurati di aver inserito le credenziali corrette.
  • Utilizzare l’indirizzo IP dell’host anziché il nome host. Se funziona, risolvi i problemi DNS svuotando la cache o utilizzando un server diverso.
  • Eseguire il ping dell’host per assicurarsi che non vi siano perdite di pacchetti.
  • Controlla la porta SSH e ListenAddress nel file sshd_config del server.
  • Usa i flag dettagliati ( ssh -v o ssh -vvv ) per ottenere maggiori dettagli su cosa non va.