Configurar o OpenSSH para as janelas com a autenticação de chaves públicas

estou a ter problemas a configurar o OpenSSH para o Windows, usando a autenticação de chave pública.

tenho isto a funcionar no meu ambiente de trabalho local e posso ssh com uma chave de máquinas Unix ou outro OpenSSH para máquinas Windows.

replicei a compilação num servidor, consigo que a autenticação da senha funcione bem, mas quando uso as chaves, obtenho o seguinte problema:

debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug3: start over, passed a different list publickey,password,keyboard-interactive
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /cygdrive/c/sshusers/jsadmint2232/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Connection closed by 127.0.0.1
Por isso, para efeitos de teste, tenho estado a tentar localizar o SSH, mas mesmo quando tentado remotamente tenho o mesmo problema.

ainda mais estranho, é que quando eu tenho tanto senha e chave pública ativada em sshd_config, ele só vai tentar usar chaves e, em seguida, bombardear com a mensagem acima e nem sequer tentar usar senha.

Aqui estão os passos que eu dei:

  1. instalar o OpenSSH para o Windows
  2. mkgroup - l>..\etc\group (grupos locais adicionados)
  3. mkgroup-d >..\etc\group (grupos de domínio adicionados)
  4. mkpasswd-L-u openssh >..\senha (adicionado o meu utilizador local)
  5. mkpasswd-D-u js admint2232 >..\passwd (adicionou o meu utilizador do domínio)
  6. Edited the homedir in passwd to point to point to c:\sshusers\%USER% - em que %Utilizador % é o nome de utilizador
  7. activa a autenticação da senha, a autenticação da chave desactivada
  8. criou as teclas ssh tanto para o JS administnt2232 / openssh como assegurou que os ficheiros fossem criados em homedirs
  9. adicionou os ficheiros autorized_ Keys .pastas de ssh para cada utilizador e chaves adicionadas para os utilizadores de ligação recebidos
  10. líquido parar opensshd / net start opensshd
  11. a senha de teste auth funciona tanto localmente como remotamente
  12. O sshd_ Config actualizado, para activar a tecla auth-reiniciar o opensshd
  13. testar a ligação e ficar acima do erro, também nem sequer tenta a senha auth?
  14. actualizado o sshd_ config, para desactivar a autenticação da senha completamente-reiniciar o opensshd
  15. testar a ligação e ainda ficar acima do erro
Parece que o servidor está a matar a ligação por alguma razão?

Author: Robin Daugherty, 2013-04-25

4 answers

A seguir estão os passos de configuração para o OpenSSH enviado com o Windows 10 v. 1803 (actualização de abril de 2018).

Configuração do servidor (powershell elevada):

  1. Instalar o servidor OpenSSH: Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0.

  2. Iniciar os Serviços de agente e sshd: Start-Service ssh-agent; Start-Service sshd (Isto irá gerar as chaves da máquina e a configuração predefinida automaticamente em $env:ProgramData\ssh).

  3. [opcional] instalar o módulo powershell do OpenSSHUtils: Install-Module -Force OpenSSHUtils

Configuração do cliente (não elevada powershell):

  1. Gerar a chave do utilizador: cd $env:USERPROFILE\.ssh; ssh-keygen.exe, seguir as instruções, concordar com a localização por omissão sugerida do ficheiro. Isto irá criar 2 arquivos: id_rsa e id_rsa.pub;

  2. [opcional] adicionar a chave ao agente de autenticação, para que não tenha de indicar a senha de cada vez que a usar: ssh-add .\id_rsa (ou seja qual for o ficheiro gerado);

A configuração do servidor continuou (powershell não-elevada):

  1. faça login como utilizador, para o qual a chave pública deve ser
  2. cd $env:USERPROFILE; mkdir .ssh; cd .ssh; New-Item authorized_keys;
  3. colar o conteúdo do ficheiro id_rsa.pub do cliente para o ficheiro .ssh\authorized_keys do passo anterior.
  4. configurar as permissões correctamente (importante!!!):
    1. executar start . para abrir o explorer com a pasta actual ($env:USERPROFILE\.ssh);
    2. clique com o botão direito authorized_keys, vá para Properties -> Security -> Advanced
    3. Carregue em "Desactivar a herança";
    4. escolha "Converter permissões herdadas em permissões explícitas neste objecto"quando for solicitado;
    5. (Muito, muito importante) Remove todas as permissões do ficheiro, excepto para o SYSTEM e para si próprio. Deve haver exatamente duas entradas de permissão no arquivo. Algumas guias sugerem que a execução do Repair-AuthorizedKeyPermission $env:USERPROFILE\.ssh\authorized_keys - isto irá tentar adicionar o utilizador sshd à lista de permissões e que irá quebrar a autenticação, por isso, não faça isso, ou pelo menos não concorde em adicionar o utilizador sshd). Tanto o SYSTEM como o Senhor devem ter controlo total sobre o ficheiro.

Cliente:

  1. corre ssh <serverusername>@<serverhostname> Deveria trabalha nesta altura.

Tentei isso com o Windows 10 como servidor e tanto ele como um Debian Linux como cliente.

 7
Author: n0rd, 2018-05-24 16:54:41
Resolvi o problema...

Está relacionado com a conta que iniciou o serviço - o seu estava a usar a conta do sistema Local - isto estava a impedi-lo de aceder à chave do pub e ao ficheiro autorized_keys.

Uma vez que parei o serviço e comecei como o utilizador em que estava a tentar ligar-me, funcionou!

Então, basicamente, você precisa começar com uma conta de serviço e, em seguida, os usuários externos se conectam como esse usuário.

 3
Author: Cambolie, 2013-04-25 11:30:21

Se estiver a utilizar mls-software.com a versão do OpenSSH aqui é outra nota.

Se instalar usando a conta SSHD_SERVER e a separação de privilégios, será capaz de usar a autenticação de chave pública (por http://www.mls-software.com/opensshd-pki.html ). Contudo, se o UAC estiver activo, não terá sucesso com a instalação. O(s) Usuário (s) não será criado corretamente e o serviço não será criado. Manualmente tentando colocar estes itens para cima após o fato é muito dificil. Simplesmente desativar o UAC antes da instalação permitirá que o processo de instalação crie corretamente o(s) Usuário (s) e o serviço. Após a instalação, você pode reiniciar a UAC.

Quando criei a conta SSHD_SERVER a autenticação manual tem sucesso ao usar a autenticação por senha, mas o cliente termina a ligação com "/bin/bash: operação não permitida". A autenticação com chaves públicas foi fechada pelo servidor (erro original postado por Cambolie).

 2
Author: Dustin, 2014-11-04 17:25:26
Resolvi-o por:
  1. Instalar no modo de separação de privilégios do SSHD_SERVER+. Eu também estabeleci separação de privilégios para" SIM " na configuração manualmente. Isto não funcionou para mim por muito tempo, o Usuário não foi criado. Então funcionou, não sei porquê. Só fui às contas de utilizador do painel de controlo para verificar se a UAC está desligada. Eu também tinha /var / vazio com acesso total para todos.
  2. para C:\openssh\var\empty eu defini permissões de" atributos obter/definir " para todos e para mim e permissões "completas" para .\sshd_server. Também o fiz ser o dono.
 0
Author: Mikhail Orlov, 2015-06-12 13:34:46