Sempre fiquei frustrado ao conectar-me a máquinas Windows. Não, não sou oponente nem apoiador da Microsoft e de seus produtos. Cada produto existe para seu próprio propósito, mas não é disso que se trata.
Sempre foi terrivelmente doloroso para mim conectar-me a servidores Windows, porque essas conexões são configuradas em um único local (olá WinRM com HTTPS) ou não funcionam de maneira muito estável (olá RDP para máquinas virtuais no exterior).
Portanto, tendo acidentalmente encontrado o projeto Win32-OpenSSH, decidi compartilhar minha experiência de configuração. Talvez esta ferramenta poupe muitos nervos a alguém.
Esclarecimento: miniaplicativo Nova regra NetFirewall usado no Windows Server 2012 e posterior. Nos sistemas mais antigos (ou desktop) você pode usar o comando:
Esclarecimento: você deve especificar um caminho absoluto.
Qual é o próximo?
E então nós configuramos sshd_config, que colocaremos em C: Dados do Programa. Por exemplo:
PasswordAuthentication no
PubkeyAuthentication yes
E crie um diretório na pasta do usuário .ssh, e nele o arquivo autorizado_chaves. Anotamos as chaves públicas lá.
Esclarecimento importante: somente o usuário em cujo diretório o arquivo está localizado deve ter o direito de gravar neste arquivo.
Mas se você tiver problemas com isso, você sempre pode desativar a verificação de direitos na configuração:
StrictModes no
A propósito, em C:Arquivos de ProgramasOpenSSH existem 2 scripts (FixHostFilePermissions.ps1, FixUserFilePermissions.ps1), que deveriam, mas não são obrigados, a fixar direitos, inclusive com autorizado_chaves, mas por algum motivo eles não se registram.
Não se esqueça de reiniciar o serviço sshd depois de aplicar as alterações.
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>
Prós/contras subjetivos.
Prós:
Abordagem padrão para conexão com servidores. Quando há poucas máquinas Windows, é muito inconveniente quando:
Então, aqui vamos via ssh, e aqui usamos rdp,
e, em geral, a prática recomendada com bastiões é primeiro um túnel ssh e o RDP através dele.
Fácil de configurar Eu acho que isso é óbvio.
Velocidade de conexão e trabalho com máquina remota Não há shell gráfico, economizando recursos do servidor e a quantidade de dados transmitidos.
Contras:
Não substitui completamente o RDP. Infelizmente, nem tudo pode ser feito no console. Quero dizer situações em que uma GUI é necessária.