Sono sempre stato frustrato dalla connessione a macchine Windows. No, non sono né un avversario né un sostenitore di Microsoft e dei suoi prodotti. Ogni prodotto esiste per il proprio scopo, ma non si tratta di questo.
È sempre stato terribilmente doloroso per me connettermi ai server Windows, perché queste connessioni sono configurate attraverso un unico posto (ciao WinRM con HTTPS) o non funzionano in modo molto stabile (ciao RDP alle macchine virtuali all'estero).
Pertanto, essendosi imbattuto accidentalmente nel progetto Win32-OpenSSH, ho deciso di condividere la mia esperienza di configurazione. Forse questo strumento farà risparmiare a qualcuno molti nervi.
Chiarimento: applet Nuova regola NetFirewall utilizzato su Windows Server 2012 e versioni successive. Nei sistemi più vecchi (o desktop) è possibile utilizzare il comando:
Chiarimento: è necessario specificare un percorso assoluto.
Quali sono le prospettive?
E poi lo sistemiamo sshd_config, che inseriremo C: Dati del programma. Ad esempio:
PasswordAuthentication no
PubkeyAuthentication yes
E crea una directory nella cartella dell'utente .ssh, e in esso il file Authorized_keys. Annotiamo lì le chiavi pubbliche.
Chiarimento importante: solo l'utente nella cui directory si trova il file dovrebbe avere il diritto di scrivere su questo file.
Ma se hai problemi con questo, puoi sempre disattivare il controllo dei diritti nella configurazione:
StrictModes no
A proposito, dentro C:ProgrammiOpenSSH ci sono 2 script (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), che dovrebbero ma non sono obbligati a fissare i diritti, anche con Authorized_keys, ma per qualche motivo non si registrano.
Non dimenticare di riavviare il servizio sshd dopo per applicare le modifiche.
ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.
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/contro soggettivi.
pro:
Approccio standard alla connessione ai server. Quando ci sono poche macchine Windows, è molto scomodo quando:
Quindi, qui andiamo via ssh, e qui usiamo rdp,
e in generale, la migliore pratica con i bastioni è prima un tunnel ssh e RDP attraverso di esso.
Facile da configurare Penso che questo sia ovvio.
Velocità di connessione e lavoro con una macchina remota Non esiste una shell grafica, il che consente di risparmiare sia le risorse del server che la quantità di dati trasmessi.
contro:
Non sostituisce completamente il PSR. Non tutto può essere fatto dalla console, ahimè. Intendo situazioni in cui è richiesta una GUI.