Estoy tratando de conectarme a un Linode (ejecutando Ubuntu 12.04 LTS) desde mi máquina local (también ejecutando Ubuntu 12.04 LTS)
Creé una clave pública y privada en mi máquina local y copié mi clave pública en el archivo autorizado de claves de mi Linode. Sin embargo, cada vez que intento ssh a mi Linode recibo el mensaje de error Permission denied (publickey)
.
No es un problema con cómo se configura ssh en mi Linode porque puedo hacerlo desde mi máquina Windows utilizando la autenticación de clave.
En mi .ssh
directorio en mi máquina local Ubuntu, tengo mis id_rsa
y id_rsa.pub
archivos. ¿Debo crear un archivo de claves autorizadas en mi máquina local?
EDITAR: Esto es lo que obtengo cuando corro ssh -vvv -i id_rsa [youruser]@[yourLinode]
:
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: id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
fuente
/var/log/auth.log
) 2) ¿Cómo transfirió la clave pública al servidor? Siempre usessh-copy-id
para estar seguro acerca de los permisos. Su directorio de inicio, el.ssh
directorio y elauthorized_keys
archivo tienen requisitos de permiso estrictos. (vea la página de manual desshd
(8) en~/.ssh/authorized_keys
). 3) ¿Generaste un nuevo par de claves en Ubuntu? En caso de que haya reutilizado la clave de Windows, primero deberá convertirla al formato OpenSSH.ssh -vvv -i .ssh/id_rsa ....
(¡tenga en cuenta la ruta de acceso a id_rsa!) - reemplace - el registro anterior solo muestra que "nosotros" no teníamos pubKey para enviar.Respuestas:
PubKeyAuthentication
Configura tu cliente
ssh-keygen
vim ~/.ssh/config
ssh-copy-id -i /path/to/key.pub SERVERNAME
Su archivo de configuración del paso 2 debe tener algo similar a lo siguiente:
Puede agregar
IdentitiesOnly yes
para asegurarse de quessh
utiliza losIdentityFile
archivos de claves y ningún otro durante la autenticación, lo que puede causar problemas y no es una buena práctica.Solución de problemas
tail -f /var/log/auth.log
(en el servidor) y controle los errores cuando intente iniciar sesiónIdentitiesOnly yes
limitar la autenticación para usar la clave única especificada.fuente
IdentityFile
línea en ~ / .ssh / config debe apuntar a la clave PRIVADA.A veces, el problema proviene de los permisos y la propiedad. Por ejemplo, si desea iniciar sesión como root
/root
,.ssh
yauthorized_keys
debe pertenecer a root. De lo contrario, sshd no podrá leerlos y, por lo tanto, no podrá saber si el usuario está autorizado para iniciar sesión.En su directorio de inicio:
En cuanto a los derechos, vaya con 700 para
.ssh
y 600 paraauthorized_keys
fuente
authorized_keys
archivo fuera de mi directorio de inicio encriptado. Al hacerlo, sin querer cambié de dueño aroot:root
.No necesitas
authorized_keys
en tu cliente.Debe decirle al cliente ssh que realmente use la clave que generó. Hay varias maneras de hacer eso. Solo por tipo de prueba
ssh -vvv -i .ssh/id_rsa [youruser]@[yourLinode]
. Deberá proporcionar su frase de contraseña cada vez que desee conectarse al servidor.Si eso funcionó, puede agregar la clave a
ssh-agent
withssh-add .ssh/id_rsa
(tendrá que proporcionar la frase de contraseña solo una vez para esto y debería funcionar siempre que no cierre la sesión / reinicie)fuente
~/.ssh/id_rsa
. Además, por lo que puedo ver, el uso de un agente clave es completamente opcional y no está relacionado con el problema.También verifique el valor de
PasswordAuthentication
in/etc/ssh/sshd_config
y si es,no
cámbielo ayes
. No olvide reiniciar el servicio ssh después de eso.fuente
El problema que tuve fue que estaba usando las claves incorrectas en el cliente. Cambié el nombre de id_rsa e id_rsa.pub a otra cosa. Puede cambiarles el nombre a sus valores predeterminados, o cuando emita el comando ssh, úselo de esta manera
fuente
También asegúrese de que el directorio de inicio del usuario (en el servidor) realmente pertenezca al usuario ssh'ing into (estaba configurado en root: root en mi caso).
Debería haber sido:
fuente
Me encontré con este problema recientemente con mi servidor web.
Normalmente mantengo una lista de claves autorizadas en todos mis servidores
~/.ssh/authorized_keys2
. Desde mi experiencia,sshd
buscará~/.ssh/authorized_keys
o~/.ssh/authorized_keys2
por defecto.En el caso de mi servidor web,
/etc/ssh/sshd_config
tenía esta líneaen lugar de
Apliqué este último, reinicié mi demonio ssh y resolví mi problema al iniciar sesión con ssh usando mi clave pública.
fuente
Otra posible causa podría ser con la
AllowedUsers
configuración en/etc/ssh/sshd_conf
. NOTA: la lista está delimitada por espacios (no delimitada por comas) como aprendí por las malas.fuente
Si todo lo demás falla, verifique que su usuario de inicio de sesión pertenezca al Grupo Permitido de ssh. Es decir, sus usuarios son miembros del grupo que se muestra en la siguiente línea en
/etc/ssh/sshd_config
el servidor:fuente
En mi caso, el cliente es ubuntu 14.04lts, el servidor ganó el servidor 2012 con cygwin. Estaba usando 'ssh administrador @ xxxx', cuando el directorio del servidor 2012 en cygwin era / home / Administrator. Por lo tanto, era sensible a mayúsculas y minúsculas, cuando intenté 'ssh Administrator @ xxxx' (tenga en cuenta la A mayúscula en el Administrador), funcionó bien.
Un mensaje de error como 'usuario no encontrado' me habría llevado a la solución mucho más rápido que 'Permiso denegado (clave pública, teclado interactivo)'.
fuente
Tuve el mismo problema al copiar la clave pública de un usuario normal (por ejemplo, johndoe) desde un sistema cPanel Centos a un servidor Ubuntu en AWS. Como sugirió gertvdijk arriba, lo verifiqué
/var/log/auth.log
y , efectivamente , lo dijoAuthentication refused: bad ownership or modes for directory /home/johndoe
. Resulta que me había equivocado 777 '/home/johndoe
cuando intenté establecer/home/johndoe/public_html
como la raíz de documentos virtualhost predeterminada para apache2 (eso tampoco es necesario para esa tarea).Vea también las respuestas aquí y aquí.
El servidor solo necesita tener la clave pública
.ssh/authorized_keys
y el cliente (computadora en la que está trabajando) debe tener la clave privada (.pem, o si usa SFTP con Filezilla, .ppk)fuente
Para aquellos usuarios de Putty como yo que vinieron a este hilo, también puede recibir este error si olvidó agregar el usuario usuario @ Ip.
Otros tienen permiso en el archivo de clave chmod a 600)
fuente
Esto es lo que funcionó para mí, la solución no es mía, pero preferiría escribirla aquí en caso de que alguien más tenga el mismo problema.
El autor original lo publicó aquí: digital-ocean-public-access-key-deny
Reemplace esto
Con este
Guarde el archivo y reinicie ssh
ssh debería funcionar ahora pidiendo una contraseña
fuente
Tuve el mismo problema que se describe en la pregunta. El resultado de la ejecución
ssh -vvv -i id_rsa [youruser]@[yourLinode]
en la máquina del cliente fue similar al descrito en la pregunta. Verifiqué todos los permisos de archivos y directorios como se aconseja en las otras respuestas, y fueron correctos.Resultó que al copiar el archivo generado
id_rsa.pub
en la máquina del servidor, como archivo~username/.ssh/authorized_keys
, había omitido accidentalmente la palabrassh-rsa
desde el principio. Agregarlo resolvió el problema.fuente
Funciona en Ubuntu 16.04 también.
El problema está dentro del
sshd_config
archivoAquí está la solución ULTIMATE:
Inicie sesión como root en su servidor Ubuntu
Ahora vaya al final y cambie el valor de "no" a "sí".
Debe tener un aspecto como este:
Cambie a no para deshabilitar las contraseñas de texto sin cifrado
para tomar efecto.
Ahora puede simplemente presionar una tecla usando el siguiente comando desde su máquina LOCAL (también conocida como computadora portátil, etc.)
Entonces abra una nueva ventana de terminal y NO inicie sesión en el servidor, simplemente ponga este comando:
ssh-copy-id john @ serverIPAddress
(Reemplace a john con su nombre de usuario).
deberías ir a ir
fuente
Algunas personas que se preguntan pueden haber configurado el acceso ssh para que sea clave solo en la cuenta raíz y luego crearon un nuevo usuario y no se dieron cuenta de que necesitan
ssh root@your-ip-address
rsync --archive --chown=[user]:[user] ~/.ssh /home/[user]
logout
Vuelva a intentarlo. Reemplace [usuario] con su nueva cuenta de usuario.
Esto es común al configurar un nuevo servidor en DigitalOcean cuando ha utilizado las teclas ssh en la configuración.
https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-18-04
fuente
En mi caso, el problema fue causado al copiar sobre un
.ssh
directorio de una máquina más antigua. Resulta que mi configuración SSH anterior estaba usando claves DSA que desde entonces han quedado en desuso . Cambiar a un nuevo par de claves, esta vez basado en RSA, resolvió el problema para mí.fuente
El siguiente método podría funcionar si puede acceder a la máquina A y la máquina B de forma independiente (por ejemplo, desde la máquina C).
Si ssh-copy-id no funciona, la autenticación de contraseña podría deshabilitarse. La siguiente es una solución alternativa .
Tener la clave pública de machineA en las claves autorizadas de machineB (es decir, ~ / .ssh / certified_keys) le permitirá ssh desde machineA. Esto también se aplica a scp.
Después de generar los pares de claves usando:
ssh-keygen
En la máquina A , ejecute
cat ~/.ssh/id_rsa.pub
Salida de muestra:
Copie la clave impresa ( ⌘ Command+ Co CRTL+ C) y luego agréguela al archivo ~ / .ssh / Authorized_keys en la máquinaB .
Por ejemplo, ejecute lo siguiente en machineB :
fuente