Tengo una gota Digital Ocean a la que estoy tratando de darme acceso ssh. No estoy seguro de lo que se le hizo anteriormente. Intenté agregar mi clave pública a través de la interfaz de usuario de Digital Ocean. Eso no funcionó, seguí obteniendo permission denied (publickey)
.
Accedí al servidor a través de la consola digital del océano y agregué manualmente mi clave pública /root/.ssh/authorized_keys
. Entonces traté de usar ssh ssh [email protected]
. Eso no funcionó (permiso denegado).
Así que intenté agregar un nuevo usuario, creé el /home/me/.ssh
directorio con permisos 700
en el .ssh
directorio y 600
en el authorized_keys
archivo. Entonces lo intenté ssh [email protected]
. Eso tampoco funcionó.
Reiniciar el demonio ssh tampoco cambia nada.
¿Qué me estoy perdiendo?
Editar:
Aquí está la salida ssh detallada.
https://gist.github.com/jaesung2061/a37cfd68308414cede8abf7f0137daa9
Edición 2:
LogLevel DEBUG3
salida:
fuente
LogLevel DEBUG3
insshd_config
). Sospecho que estos son problemas de permisos, pero puede haber varias razones para esto.[date omitted] www sssh[15029]: Connection closed by x.x.x.x port 55519 [preauth]
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys
? Para el registro detallado del servidor, modifique el archivo mencionado anteriormente, reinicie el servicio ssh, conéctese nuevamente y publique el registro (también debe estar enauth.log
.)Respuestas:
Configuración del cliente
Preparar
~/.ssh/config
Configurar entradas de host para
ssh
es realmente fácil y le ahorrará muchos problemas. Aquí hay un ejemplo:En este ejemplo, configuramos
digitaloceanbox
ygithub
ygithub.com
por lo que podemos hacer los siguientes comandos:ssh github
ssh digitaloceanbox
Si queremos iniciar sesión como un usuario diferente al especificado en el archivo de configuración, simplemente ponemos
user@
al principio:ssh user@digitaloceanbox
Generando
ssh
clavesTenga en cuenta que he especificado la ruta completa de la clave privada que quiero generar cuando se lo solicite
ssh-keygen
. También he definido el comentario (-C
) que me permite identificar fácilmente las claves en máquinas remotas.Esto creará dos archivos:
.ssh/digitalocean-rsa
.ssh/digitalocean-rsa.pub
Cuando proporcionas tu
ssh
clave, asegúrese de que sea.pub
versión! Cuando agregue a su~/.ssh/config
, asegúrese de agregar la clave privada correcta que coincida con la clave pública que agregó al sistema.Configuración del servidor
La mayoría de las instalaciones vendrán con la autenticación de clave pública habilitada. Sin embargo, si comienzas a hacer las cosas de todas maneras, es posible que tengas algunos problemas. En donde el OP está en su problema, recomiendo que el OP elimine el
/root/.ssh/
directorio para comenzar de nuevo.No se recomienda que utilice
ssh
para acceder al usuario root en el sistema remoto. Se recomiendassh
ingresar a otro usuario y luego escalar a raíz utilizando su contraseña (sudo su -
).Agregar claves al host usando
ssh-copy-id
Independientemente de si decide crear otro usuario y utilizarlo
ssh
como ese usuario, o el usuario raíz, la siguiente es la forma recomendada de colocarssh
claves en un servidor:ssh-copy-id -i /home/user/.ssh/digitalocean-rsa.pub user@digitaloceanbox
Esto permite
sshd
crear el directorio y los archivos necesarios con los permisos necesarios. Esto significa que no hay ninguna posibilidad de que arruines los permisos o necesites recordar los detalles. Simplemente use la herramienta para cargar las claves.Deshabilitar autenticación de contraseña
Dicho esto, una vez que haya ingresado la clave y haya verificado que puede conectarse utilizando las claves, se recomienda deshabilitar la autenticación de contraseña
sshd
y reiniciar el servicio:/etc/ssh/sshd_config
PasswordAuthentication no
sudo systemctl restart sshd
¿Qué pasa con los nuevos usuarios?
Si deshabilita la autenticación de contraseña, ¿cómo puede introducir nuevos usuarios? Una forma es agregar archivos de plantilla al
/etc/skel
directorio. Una vez que haya ingresado a un usuario, haga lo siguiente:sudo cp -r .ssh/ /etc/skel/
ls /etc/skel/.ssh
/etc/skel/.ssh/
para que queden en blanco, a menos que desee teclear automáticamente para cada usuario recién creado.Cuando cree nuevos usuarios con
sudo useradd -m newuser
, ese usuario tendrá el.ssh/authorized_keys
, que puede editar y tendrá los permisos adecuados.Depuración
Puede ver el
sshd
archivo de registro para ver por qué las conexiones fallan o se rechazan:sudo tail -f /var/log/auth.log
Mientras ejecuta este comando, use otra terminal para intentar iniciar sesión. Muchas veces los mensajes proporcionados son lo suficientemente buenos como para ayudar a detectar el problema o encontrar una solución en línea.
fuente
Ssh es bastante exigente con los permisos de propiedad, archivos y directorios con claves ssh.
~ / .ssh / debe ser propiedad del propietario y tener 700 permisos. ~ / .ssh / optional_keys deben ser propiedad del propietario y tener 600 permisos.
Entonces, para root:
Para el usuario yo:
Y luego inténtalo de nuevo.
Por supuesto, también debe verificar / etc / ssh / sshd_config si la raíz está autorizada a iniciar sesión, o solo con las teclas ssh.
Si usted tiene :
entonces puedes configurar:
Y luego reinicie sshd:
e intenta de nuevo.
Tenga en cuenta que con ssh, el demonio sshd se puede reiniciar incluso cuando se utiliza una sesión ssh para esto. Openssh está diseñado para lidiar con eso.
Mirando los fragmentos de tu archivo de registro cargado, ¿parece que estás usando MacOSX? ¿Podría crear una nueva clave ssh allí?
Además, descubrí en el pasado que cuando tengo más de una clave ssh privada en mi computadora local para mi usuario, esto a veces hace que sea imposible iniciar sesión de forma remota con ssh. Ayudó mucho hacer entradas en la computadora local en el archivo ~ / .ssh / config, para resolver esto. Por ejemplo :
Después de eso, intente con la línea de comando en su computadora local:
Al usar las teclas ssh, así como sin teclas ssh para algunos otros inicios de sesión, puede, además de las entradas con teclas ssh, también definir un inicio de sesión ssh sin uso de la tecla ssh en el archivo ~ / ssh / config, por ejemplo:
Esto funciona bien para mi. También es posible definir qué tecla usar en la línea de comando:
Esto podría facilitar la depuración, y en la línea de comandos esto siempre debería funcionar en la computadora local.
fuente
sudo chmod 700 /home/me/
IdentityFile
línea me sacó de una rutina de una hora.Verifique la configuración del demonio ssh (debe estar en
/etc/ssh/sshd_config
) y verifique si:También verifique el archivo de configuración para ver si se han configurado AllowUsers o AllowGroups , ya que actúan como listas blancas para usuarios y grupos respectivamente.
Además, noté que está intentando agregar una clave al usuario root. De manera predeterminada, el inicio de sesión raíz debe estar deshabilitado, pero también puede cambiarlo a través del campo PermitRootLogin .
fuente
Permission denied (publickey)
Según los registros que ha vinculado, creo que tiene problemas en el lado del cliente al no encontrar el archivo de clave privada .
Primero verifique que el archivo
~/.ssh/id_rsa
existe en su máquina local, y es el correcto _ (si tiene más).Verifique los
.ssh
permisos de la carpeta (debe serdrwx------
, si no se ejecutasudo chmod 700 ~/.ssh
) y su contenido (debe ser-rw-------
, si no se ejecutasudo chmod 600 ~/.ssh/*
) . Aplique los mismos permisos para la máquina remota también.Además, puede intentar forzar el uso de su clave privada deseada , dándole directamente
ssh
el-i
parámetro.Puede ejecutar algo como lo siguiente:
ssh -i /path/to/your/private-key [email protected]
o
ssh -i ~/.ssh/id_rsa [email protected]
Puede obtener más información en la página de manual de ssh (ejecutar
man ssh
en su terminal) .También tenga en cuenta que si desea iniciar sesión como
root
usuario, su cuenta raíz debe estar habilitada antes de iniciar sesión, creando una contraseña para ellasudo passwd root
o su herramienta de administración del servidor (Ubutntu tiene la cuenta raíz deshabilitada de forma predeterminada) . Puedes obtener más información en Ubuntu Wiki .Espero eso ayude.
fuente
Terminé reinstalando
openssh-server
que solucionó el problema. Las soluciones dadas son geniales, pero no funcionaron para mí. No tengo idea de qué estaba causando el problema, pero creo que el desarrollador anterior pudo haber alterado la configuración y estropeado las cosas bastante mal.Dudo que haya alguien con un problema tan específico como el mío. Sin embargo, si tiene una gota de Digital Ocean, no puede obtener acceso SSH y ninguna de las soluciones dadas funciona, reinstale el servidor SSH ejecutando estos comandos a través de la consola Digital Ocean. Tenga en cuenta que este es un proceso destructivo y borrará los archivos de configuración antiguos
/etc/ssh/
(no su.ssh
directorio).Suponiendo que su cliente / claves ssh estén en orden, debería poder SSH en su servidor.
fuente
Este problema apareció para mí usando la imagen de Debian en Digital Ocean. De alguna manera, durante el breve proceso de configuración, probablemente cuando configuré la contraseña de root, el propietario
/root
fue cambiado al usuariodebian
. Vi lo siguiente en/var/log/auth.log
:Jul 26 20:58:17 docker sshd[12576]: Authentication refused: bad ownership or modes for directory /root
Simplemente ejecutando
chown root:root -R /root
resolvió el problema.HTH
fuente
Acabo de tener un problema muy similar. Esto funcionó para mí: agregue esta línea a / etc / ssh / sshd_config
Luego reinicie ssh de la manera habitual.
fuente