Mi ha sempre infastidito connettermi a macchine Windows. No, non sono né un oppositore né un sostenitore di Microsoft e dei loro prodotti. Ogni prodotto esiste per uno scopo specifico, ma non è di questo che si parla.
Per me è sempre stato doloroso connettersi a server Windows, perché queste connessioni vengono configurate in modo complicato (ciao WinRM con HTTPS) oppure non funzionano molto stabilmente (salve RDP per le macchine virtuali oltreoceano).
Quindi, imbattemi casualmente nel progetto , ho deciso di condividere la mia esperienza di configurazione. Forse a qualcuno questa tool potrebbe far risparmiare un sacco di nervi.

Opzioni di installazione:
- Attraverso Chocolatey
- Attraverso Ansible, ad esempio il ruolo
Ora parlerò del primo punto, poiché con gli altri è tutto più o meno chiaro.
Voglio sottolineare che questo progetto è attualmente in fase beta, quindi non è raccomandato usarlo in produzione.
Dunque, scarichiamo l'ultima release, al momento è . Ci sono versioni sia per sistemi a 32 che a 64 bit.
Decomprimiamo in C:Program FilesOpenSSH
Un aspetto obbligatorio per il corretto funzionamento: i diritti di scrittura in questa directory devono essere solo per SYSTEM e per il gruppo degli amministratori.
Installa i servizi con lo script install-sshd.ps1 presente in questa directory
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1Consenti le connessioni in entrata sulla porta 22:
New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22Nota: l'applet New-NetFirewallRule è utilizzato su Windows Server 2012 e versioni successive. Nei sistemi più vecchi (o desktop) si può usare il comando:
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
Avviamo il servizio:
net start sshdAll'avvio verranno generate automaticamente le chiavi host (se assenti) in %programdata%ssh
Possiamo abilitare l'avvio automatico del servizio all'avvio del sistema con il comando:
Set-Service sshd -StartupType AutomaticInoltre, è possibile cambiare la shell predefinita (dopo l'installazione, di default è cmd):
New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -ForceNota: È necessario specificare il percorso assoluto.
Cosa succede dopo?
E poi configuriamo sshd_config, che si trova in C:ProgramDatassh. Ad esempio:
PasswordAuthentication no
PubkeyAuthentication yesE creiamo nella cartella dell'utente la directory .ssh, e al suo interno il file authorized_keys. Qui inseriamo le chiavi pubbliche.
Importante: solo l'utente nella cui directory si trova il file deve avere diritti di scrittura su di esso.
Ma se hai problemi con questo, è sempre possibile disabilitare il controllo dei permessi nel file di configurazione:
StrictModes noA proposito, in C:Program FilesOpenSSH ci sono 2 script (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), che dovrebbero ma non sono obbligati a correggere i permessi, incluso anche con authorized_keys, ma per qualche motivo non lo fanno.
Non dimenticare di riavviare il servizio Il client SSH e i programmi dopo per applicare le modifiche.
ru-mbp-666:infrastructure$ ssh Administrator@192.168.1.10 -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. Tutti i diritti riservati.
PS C:UsersAdministrator> Get-Host
Name : ConsoleHost
Version : 5.1.14393.2791
InstanceId : 653210bd-6f58-445e-80a0-66f66666f6f6
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-US
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled : True
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PS C:UsersAdministrator>Pro e contro soggettivi.
Pro:
- Approccio standard per connettersi ai server.
Quando ci sono alcune macchine Windows, è molto scomodo quando:
Quindi, qui ci connettiamo tramite ssh, mentre qui tramite rdp,
e in generale, le best-practice con i bastioni, prima tunnel ssh, e poi tramite quello RDP. - Semplicità di configurazione
Ritengo che sia ovvio. - Velocità di connessione e operatività con la macchina remota
Nessuna interfaccia grafica, si risparmiano sia le risorse del server che la quantità di dati trasmessi.
Contro:
- Non sostituisce completamente RDP.
Non tutto può essere fatto dalla console, purtroppo. Parlo di situazioni in cui è necessario un GUI.
Materiali utilizzati nell'articolo:
Le opzioni di installazione sono state copiate senza vergogna da .
Fonte: habr.com
