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: 2
podrí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: 2
error 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.
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:
También puede ser necesario corregir los permisos usando Fix {Host | User} FilePermissions.ps1.
fuente
Así que moví el archivo autorizado_claves al directorio de inicio del usuario / .ssh, establecí los permisos de la siguiente manera:
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.
fuente