sshd rechaza la clave pública aunque coincida con claves_autorizadas

0

Estoy usando openSSH para Windows (32 bits) y he configurado sshd para la autenticación de clave pública. Estoy bastante seguro de que todos los permisos de archivo están configurados correctamente, y he agregado la clave pública correcta al archivo autorizado_claves. Sin embargo, cuando el cliente intenta autenticar su clave pública, falla. La salida de depuración es la siguiente: (clave pública reemplazada por xxxxxxx)

debug1: userauth-request for user X service ssh-connection method publickey debug1: attempt 2 failures 0 debug2: input_userauth_request: try method publickey debug3: userauth_pubkey: have signature for RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug1: trying public key file C:\\Users\\X\\authorized_keys debug1: matching key found: file C:\\Users\\X\\authorized_keys, line 2 RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug3: socket:0, socktype:1, io:00986788, fd:3 debug3: unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2 debug3: close - io:00986788, type:2, fd:3, table_index:3 debug1: get_priv_agent_sock: unable to connect to privileged agent, errno:2 debug2: userauth_pubkey: authenticated 0 pkalg rsa-sha2-512 Failed publickey for X from ::1 port 63175 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug3: userauth_finish: failure partial=0 next methods="publickey,password,keyboard-interactive"

Me pregunto si unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2podría ser la causa de esto. Si es así, ¿hay alguna forma de deshabilitar esta funcionalidad y simplemente usar las claves autorizadas?

EDITAR: Resulta que el unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2error ha desaparecido usando la sugerencia de Jakuje, sin embargo, la autenticación de clave pública todavía falla con:

Failed publickey for X from ::1 port 63175 ssh2: RSA SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx debug3: userauth_finish: failure partial=0 next methods="publickey,password,keyboard-interactive"

EDIT2: Vale la pena mencionar que no ejecuto una configuración típica. Los ejecutables de openSSH, los archivos de configuración y los archivos de claves no se encuentran en el directorio de inicio del usuario, sino en el directorio ProgramData del usuario.

Arturo
fuente

Respuestas:

3
debug3: unable to connect to pipe \\\\.\\pipe\\openssh-ssh-agent, error: 2
debug3: close - io:00986788, type:2, fd:3, table_index:3
debug1: get_priv_agent_sock: unable to connect to privileged agent, errno:2

Se encuentra la clave, pero el servidor necesita contactar al agente de autenticación para crear su sesión. No se inició o falló. Puede intentar encontrarlo, reiniciar el servidor sshd, etc. Lo que todas las modificaciones de Windows son y hacen se discute en esta solicitud de extracción:

https://github.com/openssh/openssh-portable/pull/63

Jakuje
fuente
He actualizado la pregunta, el error al no poder conectarse a la tubería se ha ido ahora, pero la autenticación de la clave pública todavía falla por alguna razón
Arthur
1

Este problema me ocurrió cuando actualicé OpenSSH de 0.6.0 a 0.20.0 simplemente sobrescribiendo los archivos. De hecho, como señaló @Jakuje, ha habido algunos cambios en la arquitectura y ahora sshd requiere un agente separado, ssh-agent, que no existía en versiones anteriores.

Necesita reinstalar OpenSSH haciendo:

PS C:\OpenSSH-Win64> net stop sshd

The sshd service was stopped successfully.

PS C:\OpenSSH-Win64> .\uninstall-sshd.ps1
sshd successfully uninstalled
ssh-agent service is not installed
PS C:\OpenSSH-Win64> .\install-sshd.ps1
[SC] SetServiceObjectSecurity SUCCESS
[SC] ChangeServiceConfig SUCCESS
[SC] ChangeServiceConfig2 SUCCESS
sshd and ssh-agent services successfully installed
PS C:\OpenSSH-Win64> net start sshd

The sshd service was started successfully.

También puede ser necesario corregir los permisos usando Fix {Host | User} FilePermissions.ps1.

dnegel
fuente
0

Así que moví el archivo autorizado_claves al directorio de inicio del usuario / .ssh, establecí los permisos de la siguiente manera:

  • Usuario SSHD: leer y ejecutar, leer, escribir
  • Sistema: acceso completo
  • Administradores: acceso completo

Y cambió la ruta en el archivo sshd_config para apuntar a la nueva ubicación, y todo comenzó a funcionar. Espero que esto ayude a alguien más que pueda enfrentar el mismo problema.

Arturo
fuente