He estado utilizando la autenticación de clave pública en un servidor remoto desde hace algún tiempo para uso de shell remoto, así como para montajes sshfs. Después de forzar un desmontaje de mi directorio sshfs, noté que ssh comenzó a solicitarme una contraseña. Traté de purgar el .ssh remoto / autorizado_claves de cualquier mención de la máquina local, y limpié la máquina local de referencias a la máquina remota. Luego repetí mi ssh-copy-id, me solicitó una contraseña y regresó normalmente. Pero he aquí, cuando ssh al servidor remoto todavía se me solicita una contraseña. Estoy un poco confundido sobre cuál podría ser el problema, ¿alguna sugerencia?
28
~
,~/.ssh
y~/.ssh/authorized_keys
, de gestiónssh -vvv server.example.com
e informar la salida (anonimizar los nombres de host y el usuario si lo desea). Si tiene acceso de root en el servidor, observe las entradas de registro creadas cuando intente iniciar sesión con una clave pública.Respuestas:
sshd se vuelve raro acerca de los permisos en $ HOME, $ HOME / .ssh (ambos directorios) y en $ HOME / .ssh / optional_keys.
Una de mis cajas de Linux terminó con permisos drwxrwxrwx en mi directorio $ HOME. Un cuadro de Arch Linux no iniciaría sesión con las claves públicas hasta que elimine el permiso 'w' para el grupo, otro en mi directorio $ HOME.
Intente hacer que $ HOME y $ HOME / .ssh / tengan permisos más restrictivos para grupos y otros. Vea si eso no deja que sshd haga sus cosas.
fuente
ssh-copy-id
debería haberse ocupado de los permisos de~/.ssh
y~/.ssh/authorized_keys
, pero también asegúrese de que su directorio de inicio no sea de escritura grupal.chmod g-w homedir
en el servidor remoto funcionó de maravilla.Se necesitan los siguientes permisos:
.ssh
carpeta:700 (drwx------)
644 (-rw-r--r--)
600 (-rw-------)
fuente
Recientemente experimenté este problema también.
Se corrigió modificando los permisos del
$HOME
directorio. Sin embargo, simplemente correrchmod g-w ~/
no corrigió el problema. Además dechmod g-w ~/
, también necesitaba modificar los permisos deothers
en el$HOME
directorio ejecutandochmod o-wx ~/
Juntos:
Tenga en cuenta que no estoy seguro de si
o-x
era necesario, simplemente lo ejecuté como medida de precaución.fuente
Cambiar los permisos para la carpeta ~ / .ssh resolvió mi problema de acuerdo con esta publicación en Super User SE .
fuente
¿El problema se produce también en inicios de sesión paralelos, es decir, si intenta montar sshfs mientras tiene una sesión ssh abierta? Si no es así, ¿supongo que tiene su directorio de inicio cifrado? En este caso
$HOME/.ssh/authorized_keys
, solo sería utilizable en la máquina remota después de su primer inicio de sesión (utilizando su contraseña).Consulte https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting para obtener una explicación y la solución necesaria.
fuente
Publicaría esto como un comentario, pero probablemente sería demasiado largo. Solo quería agregar que
ssh-copy-id
intenta enviar la clave pública desde la/.ssh
ubicación dentro de su$HOME
carpeta.Si está intentando
ssh
rootear con una clave pública (guarde los comentarios relacionados con la seguridad),ssh-copy-id
podría estar intentando iniciar sesión con la clave pública incorrecta si su$HOME
variable está configurada en otra cosa que no sea/root
(como configurarse en el directorio de inicio de su usuario normal) ), por lo tanto, se le solicitará al usuario root porque la clave pública de root no está instalada en el sistema remoto.Puede usar la siguiente línea para especificar la clave pública exacta:
pub="$(cat /root/.ssh/id_rsa.pub)"; ssh user@remotehost "echo $pub >> .ssh/authorized_keys; chmod 700 .ssh; chmod 600 .ssh/authorized_keys"
Encontré este escenario en la naturaleza varias veces (incluso esta mañana) y pensé que trataría de poner mis 2 centavos, en caso de que alguien se encontrara en la misma situación.
fuente
Al igual que otros colaboradores mencionados, este es probablemente un problema de permiso.
La mejor manera de diagnosticar esto es reiniciar el demonio SSH en el servidor remoto con la opción de depuración activada, generalmente la opción "-d". El mensaje del demonio OpenSSH es muy explícito. Por ejemplo, verá mensajes como:
fuente
La razón por la que la clave pública no sobrevivió después del reinicio fue porque el directorio de inicio de mi servidor estaba encriptado. (hace esto mientras instala el servidor)
fuente
Otro posible problema es que el servidor no admite su algoritmo clave. En mi caso, encontré los siguientes mensajes en mis
sshd
registros (/var/log/auth.log
en mi caso):Si ese es el caso, debe habilitar el soporte para ese algoritmo en su
sshd
configuración (que puede requerir una actualización a unasshd
versión más reciente ) o debe cambiar su clave a un algoritmo compatible con elsshd
que está intentando conectarse .fuente
Como esta pregunta aparece entre los primeros resultados de búsqueda al buscar en Google este comportamiento, también agregaré mi solución:
En mi caso no fue nada relacionado con los permisos. Por cualquier razón (no me molesté en averiguar por qué razón en realidad, ya que encontré una solución rápida) al ejecutar el comando ssh, el programa no buscó el archivo de identidad correcto. Una solución fue agregar manualmente en el servidor remoto una clave SSH que el programa SSH intentó usar. Puede observar lo que hace el programa SSH cuando ejecuta el comando agregando -v al comando:
Luego simplemente toma en su máquina local cualquier clave pública para la cual el programa SSH intenta encontrar un archivo de identidad / clave privada para, en una Mac, por ejemplo:
... y agréguelo al archivo autorizado de claves del control remoto en:
Otra, en mi caso, la mejor solución era agregar un host personalizado en mi archivo de configuración ssh local. En mi Mac es:
Aquí puede agregar, por ejemplo, algo como esto:
Entonces solo necesitas ejecutar:
...y voilá
fuente