Windows 10 sshd: el ssh entrante sin contraseña exige una contraseña

Windows 10 sshd: el ssh entrante sin contraseña exige una contraseña

Estoy intentando configurar ssh sin contraseña ni frase de contraseña desde un host Linux Mint 19.1 a un host con Windows 10. El host de Windows 10 tiene OpenSSH_for_Windows_7.7p1. Este es el puerto OpenSSH de Microsoft.

Puedo configurar esto para cuentas de administrador, pero las cuentas sin privilegios no funcionan para mí. Las cuentas de administrador se hacen de manera diferente.

He probado una gran cantidad de cosas diferentes, pero esta es la que creo que debería funcionar y lo que sale mal:

Creo un archivo /Users/Alden Stromberg/.ssh/authorized_keys con mkdir y echo > (o mkdir y cygwin vi - mismo resultado).

Luego uso OpenSSHUtils paraintentarpara establecer los permisos correctos:

PS C:\Users\Alden Stromberg\.ssh> Import-Module 'C:\Program Files\WindowsPowerShell\Modules\OpenSSHUtils\0.0.2.0\OpenSSHUtils.psd1'

PS C:\Users\Alden Stromberg\.ssh> Repair-AuthorizedKeyPermission .\authorized_keys                                                   
  [*] .\authorized_keys 

'NT AUTHORITY\SYSTEM' has the following access to '.\authorized_keys': 'Deny'-'ExecuteFile'.
Shall I make it Allow FullControl?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):  
Exception calling "SetAccessRule" with "1" argument(s): "This access control list is not in canonical form and therefore cannot be  
modified."
At C:\Program Files\WindowsPowerShell\Modules\OpenSSHUtils\0.0.2.0\OpenSSHUtils.psm1:399 char:17
+                 $acl.SetAccessRule($ace)
+                 ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException

'NT AUTHORITY\SYSTEM' now has FullControl access to '.\authorized_keys'. 

'DESKTOP-A31M9SV\None' should not have access to '.\authorized_keys'..
Shall I remove this access?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
Exception calling "RemoveAccessRule" with "1" argument(s): "This access control list is not in canonical form and therefore cannot  
be modified."
At C:\Program Files\WindowsPowerShell\Modules\OpenSSHUtils\0.0.2.0\OpenSSHUtils.psm1:490 char:20
+                 if(-not ($acl.RemoveAccessRule($ace)))
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException


'Everyone' should not have access to '.\authorized_keys'..
Shall I remove this access?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):  
Exception calling "RemoveAccessRule" with "1" argument(s): "This access control list is not in canonical form and therefore cannot  
be modified."
At C:\Program Files\WindowsPowerShell\Modules\OpenSSHUtils\0.0.2.0\OpenSSHUtils.psm1:490 char:20
+                 if(-not ($acl.RemoveAccessRule($ace)))
+                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException


'NT SERVICE\sshd' needs Read access to '.\authorized_keys'.
Shall I make the above change?
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help (default is "Y"):
Exception calling "AddAccessRule" with "1" argument(s): "This access control list is not in canonical form and therefore cannot be  
modified."
At C:\Program Files\WindowsPowerShell\Modules\OpenSSHUtils\0.0.2.0\OpenSSHUtils.psm1:564 char:21
+                     $acl.AddAccessRule($ace)
+                     ~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : InvalidOperationException

'NT SERVICE\sshd' now has Read access to '.\authorized_keys'.
Set-Acl : The process does not possess the 'SeSecurityPrivilege' privilege which is required for this operation.
At C:\Program Files\WindowsPowerShell\Modules\OpenSSHUtils\0.0.2.0\OpenSSHUtils.psm1:582 char:9 
+         Set-Acl -Path $FilePath -AclObject $acl -Confirm:$false
+         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : PermissionDenied: (C:\Users\Alden ...authorized_keys:String) [Set-Acl], PrivilegeNotHeldException      
    + FullyQualifiedErrorId : System.Security.AccessControl.PrivilegeNotHeldException,Microsoft.PowerShell.Commands.SetAclCommand    

      Repaired permissions

Con la esperanza de arreglar la ACL no canónica, intenté:

icacls.exe .\authorized_keys /reset /T /C /L /Q

...pero volver a ejecutar Repair-AuthorizedKeyPermission no produce ninguna alegría.

¿Qué estoy haciendo mal? ¿Está 0.0.2.0\OpenSSHUtils.psm1 desactualizado?

Para completar, esto es lo que funcionó para las cuentas de administrador:

get-acl c:\ProgramData\ssh\ssh_host_dsa_key | set-acl c:\ProgramData\ssh\administrators_authorized_keys

¡Gracias!

Respuesta1

Lo que solucionó este problema para mí fueron comment outestas dos líneas al final del C:\ProgramData\ssh\sshd_configarchivo:

Match Group administrators
      AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Luego reinicie sshd. Después de eso (y agregando la clave de publicación a ~/.ssh/authorized_keys y asegurándome de que el archivo tuviera los permisos correctos) ya no se me solicitó una contraseña.

Respuesta2

Una forma de hacer que la autenticación sin contraseña funcione para cuentas que no son de administrador se describe en: https://www.techpaste.com/2015/06/windows-ssh-server-setup-and-configuration/

En resumen, colóquelos en su sshd_config, descomentando las entradas preexistentes según sea necesario, que se encuentran enc:\ProgramData\ssh\

PermitRootLogin yes
StrictModes no
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
IgnoreUserKnownHosts yes

Entonces net stop sshdy net start sshd.

Esto probablemente significa que todos los usuarios de la computadora pueden leer sus claves_autorizadas, pero al menos funciona.

información relacionada