Crear un nuevo usuario SSH en Ubuntu Server

81

Acabo de crear un nuevo servidor virtual Ubuntu y estoy en proceso de reforzarlo para su uso en producción. Actualmente tengo una cuenta de root. Quiero hacer lo siguiente:

  • Crea un nuevo usuario (llamémoslo jim por el resto de esto). Quiero que tengan un directorio /home/ .
  • Da acceso a jim SSH.
  • Permita que jim a su sea root pero no realice sudo operaciones.
  • Desactiva el acceso raíz a SSH.
  • Mueva SSHd a un puerto no estándar para ayudar a detener los ataques brutales.

Mi problema radica en los dos primeros elementos. Ya encontré useradd pero, por algún motivo, no puedo iniciar sesión como usuario creado con SSH. ¿Debo superar SSHd para permitir esto?

    
pregunta Oli 08.12.2010 - 17:01

7 respuestas

83

Editar (como root) /etc/ssh/sshd_config . Anexe lo siguiente:

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234 hace que SSH escuche en el puerto 1234. Puede usar cualquier puerto no utilizado de 1 a 65535. Se recomienda elegir un puerto con privilegios (puerto 1-1024) que solo puede ser utilizado por root. Si su daemon SSH deja de funcionar por alguna razón, una aplicación no autorizada no puede interceptar la conexión.

PermitRootLogin no permite el inicio de sesión directo de root.

AllowUsers jim permite al usuario jim iniciar sesión a través de SSH. Si no tiene que iniciar sesión desde cualquier lugar, puede hacerlo más seguro restringiendo jim a una dirección IP (reemplace 1.2.3.4 con su dirección IP real):

AllowUsers jim@1.2.3.4

Los cambios en el archivo de configuración /etc/ssh/sshd_config no se aplican inmediatamente, para volver a cargar la configuración, ejecute:

sudo service ssh reload
    
respondido por el Lekensteyn 08.12.2010 - 18:57
61

SSH es muy exigente con el directorio y los permisos de archivos. Asegúrese de que:

  1. El directorio /home/username/.ssh tiene el permiso "700" y es propiedad del usuario (¡no de la raíz!)
  2. / home / username / ssh / authorized_keys tiene permiso "600" y es propiedad del usuario

Copie su clave pública en el archivo authorized_keys.

sudo chown -R username:username /home/username/.ssh
sudo chmod 0700 /home/username/.ssh
sudo chmod 0600 /home/username/.ssh/authorized_keys

Hay NO necesidad de agregar al usuario a / etc / ssh / ssh_config.

    
respondido por el dh1tw 01.03.2014 - 18:32
10

Habrá pistas en /var/log/auth.log de por qué SSH (o PAM) está rechazando el intento de inicio de sesión. Se pueden encontrar pistas adicionales utilizando la opción -v con el cliente ssh . Varias situaciones comunes, algunas mencionadas en las otras respuestas:

  • la cuenta de usuario carece de contraseña, o está desactivada de otra forma (vea man passwd , intente restablecer la contraseña o verifique el contenido de /etc/shadow ).
  • /etc/ssh/sshd_config está configurado para no permitir el inicio de sesión ( DenyUsers , AllowUsers , PasswordAuthentication , PubkeyAuthentication , UsePAM etc, ver man sshd_config ).
  • el shell del usuario no aparece en /etc/shells .
  • varios problemas de permisos en directorios o archivos relacionados con la operación SSH: /etc/ssh , /home/jim/.ssh , /home/jim/.ssh/* , etc.

También recomendaría usar adduser (en lugar de useradd ) para agregar nuevos usuarios; es un poco más amigable con varias configuraciones de cuenta predeterminadas.

Mientras el usuario no sea parte del grupo admin , no podrá sudo a la raíz. Para que utilicen su , tendrá que establecer una contraseña de root ( passwd root ), después de lo cual recomiendo configurar PermitRootLogin=no en /etc/ssh/sshd_config .

    
respondido por el Kees Cook 11.12.2010 - 08:15
10

Podría estar equivocado, pero siempre tengo que instalar el daemon del servidor antes de poder conectarme (al menos en el escritorio) ssh está instalado de manera predeterminada, pero eso es solo el cliente

este comando instala el servidor

sudo apt-get install openssh-server

Puede cambiar el puerto y detener el inicio de sesión raíz editando

/etc/ssh/sshd_config

Sin embargo, esto requiere que reinicies el servicio.

sudo service ssh restart

    
respondido por el Matt Mootz 08.12.2010 - 17:48
7

Jim no tendrá acceso SSH hasta que haya establecido una contraseña. Como ejecutar raíz:

grep -i "jim" /etc/shadow | awk -F':' '{ print  }'

Si este comando devuelve un "!" carácter, entonces el inicio de sesión está deshabilitado para esta cuenta. La ejecución de passwd jim como raíz le solicitará una cadena de contraseña nueva y confirmada, después de lo cual el comando grep anterior debe devolver una cadena hash que representa la contraseña de jim.

También asegúrese de verificar que jim tiene un shell de inicio de sesión, configurado de manera predeterminada, y un directorio de inicio que existe.

Tenga en cuenta la publicación de lekensteyn para obtener información sobre la modificación de la configuración del servidor SSH.

    
respondido por el Tok 08.12.2010 - 19:24
2

En mi caso, tenía un grupo al que se le permitía el acceso y el usuario no formaba parte de él. Esto lo resolvió para mí.

Utilizando el ejemplo anterior con el usuario jim y asumiendo miembro del grupo jim ya que es solo un grupo (emitir groups command mientras está conectado como jim para encontrar grupos de los que forma parte). En mi archivo /etc/ssh/sshd_config , tenía una entrada de AllowGroups sshusers y, por lo tanto, necesitaba agregar jim al grupo sshusers . A continuación se muestra cómo se lograría esto:

usermod -a -G sshusers jim

Reemplace su grupo y usuario según corresponda para su configuración.

    
respondido por el Joshua Fricke 13.02.2018 - 01:22
0

Puede haber algunos casos en que PasswordAuthentication esté deshabilitado de manera predeterminada.

Compruebe amablemente /etc/ssh/sshd_config y asegúrese de que el atributo PasswordAuthentication esté establecido en yes .

    
respondido por el Aldee 24.08.2017 - 17:05

Lea otras preguntas en las etiquetas