Crear un nuevo usuario SSH en Ubuntu Server

104

Acabo de crear un nuevo servidor virtual de Ubuntu y estoy en proceso de fortalecerlo para uso en producción. Actualmente tengo una cuenta raíz. Quiero hacer lo siguiente:

  • Cree un nuevo usuario (llamemos jimpor el resto de esto). Quiero que tengan un /home/directorio.
  • Dar jimacceso SSH.
  • Permitir jima suarraigar, pero no realizar sudooperaciones.
  • Desactive el acceso raíz SSH.
  • Mueva SSHd a un puerto no estándar para ayudar a detener los ataques brutos.

Mi problema radica en los dos primeros elementos. Ya he encontrado, useraddpero por alguna razón, no puedo iniciar sesión como un usuario creado con él a través de SSH. ¿Necesito vencer a SSHd para permitir esto?

Oli
fuente
¡Hola! Puedo ayudarlo en los servidores, no sé cuál es su problema con SSH, porque para mí la configuración predeterminada nunca rechaza mi conexión. Puede ver man 5 nologin , esto escribe, que si / etc / nologin existe, puede iniciar sesión solo con root. Intente iniciar sesión normalmente, luego escriba los resultados.
antivirtel
¿Cuál es el shell del usuario? ¿Es / bin / bash? Mira eso en / etc / password. Asegúrese de que no sea / dev / null o / bin / false.
LFC_fan
Sí, LFC_fan o / etc / nologin también. Use (sudo) cat / etc / passwd | grep jim
antivirtel
1
@SI. Roland tengo un /etc/nologinarchivo pero está vacío. Lo eliminé y reinicié ssh, pero todavía responde Permission denied, please try again.cuando intento iniciar sesión.
Oli
@LFC_fan es / bin / bash
Oli

Respuestas:

99

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

Port 1234
PermitRootLogin no
AllowUsers jim

Port 1234hace que SSH escuche en el puerto 1234. Puede usar cualquier puerto no utilizado del 1 al 65535. Se recomienda elegir un puerto privilegiado (puerto 1-1024) que solo puede usar la raíz. Si su demonio 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 de root directo.

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

AllowUsers [email protected]

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

sudo service ssh reload
Lekensteyn
fuente
10
+1: Nota: estas instrucciones siguen siendo aplicables a las versiones más nuevas de Ubuntu (por ejemplo, 13.04). Si lo hace quiere rootinicio de sesión, sin embargo, (tal vez usted todavía la configuración del servidor), debe establecer PermitRootLogina yesy también añadir roota AllowUsers.
JRG-Developer el
44
¿Cuál es la contraseña para este usuario?
Wolfpack'08
Mi VPS viene con una contraseña de root para el inicio de sesión SSH en el puerto 22. Agregar la respuesta a sshd_config hace que root no pueda iniciar sesión. ¿Esto se debe a que también utilicé el puerto 22 para jim, o hay alguna otra razón?
Wolfpack'08
1
@Lekensteyn He encontrado que solo agregar un nuevo usuario a Ubuntu crea una cuenta ssh para ese usuario ... useradd -m -G sudo,adm -s /bin/bash mecharokypasswd mecharok
Wolfpack'08
3
@ Wolfpack'08 Se usa AllowUsers username1,username2para restringir los inicios de sesión SSH a esos usuarios. Asegúrese de que sshdse vuelve a cargar. Si esto no ayuda, cree una nueva pregunta.
Lekensteyn
97

SSH es muy exigente con el directorio y los permisos de archivo. Asegúrate de eso:

  1. El directorio /home/username/.ssh tiene permiso "700" y es propiedad del usuario (¡no root!)
  2. / Home / username / ssh / Authorized_keys tiene permiso "600" y es propiedad del usuario

Copie su clave pública en el archivo autorizado_claves.

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

NO es necesario agregar el usuario a / etc / ssh / ssh_config.

dh1tw
fuente
2
Mi problema fue conocido, lo creé ~./sshcomo root y nunca le di al usuario la propiedad.
Gerve
1
Mi problema era que estaba tratando de usar en /root/.ssh/authorized_keyslugar de /home/bob/.ssh/authorized_keys.
Alex W
Puedo confirmar: en nuestro alojamiento VPS no hubo necesidad de editar ssh_config. Configurar ese directorio y archivo fue suficiente.
superjos
2
Para mí tenía que ser chmod 755 /home/username/.ssh, de lo contrario no funcionaría.
Jim W
Es mucho más fácil iniciar sesión como usuario (o sudo su --login {user}) y ejecutar ssh-keygen-> La carpeta ".ssh", la clave + certificado y los permisos están completos. Simplemente cree autorizadas_claves según sus instrucciones.
bshea
13

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

  • la cuenta de usuario carece de contraseña o está deshabilitada (consulte man passwd, intente restablecer la contraseña o verificar el contenido de /etc/shadow).
  • /etc/ssh/sshd_configestá configurado para no permitir el inicio de sesión ( DenyUsers, AllowUsers, PasswordAuthentication, PubkeyAuthentication, UsePAMetc, ver man sshd_config).
  • el shell del usuario no aparece en la lista /etc/shells.
  • diversos problemas de permisos en los directorios o archivos relacionados con la operación de 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 respecto a varias configuraciones de cuenta predeterminadas.

Mientras el usuario no sea parte del admingrupo, no podrá sudo a la raíz. Para que utilicen Do , que tendrá que establecer una contraseña de root ( passwd root), después de lo cual recomiendo configuración PermitRootLogin=noen /etc/ssh/sshd_config.

Kees Cook
fuente
Muchas gracias por una gran respuesta, ¡especialmente "adduser" ayudó mucho!
vishal.biyani
11

Podría estar equivocado, pero siempre tengo que instalar el demonio del servidor antes de poder conectarme (al menos en el escritorio) ssh está instalado de forma 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 reinicie el servicio.

sudo service ssh restart

Matt Mootz
fuente
Este es un servidor virtual (VPS), por lo que SSH se instala de manera predeterminada. Es mi única interfaz para el servidor. Y puede recargar la configuración a través de ella sudo /etc/init.d/ssh reload, pero buena información de todos modos.
Oli
8

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

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

Si este comando devuelve un "!" entonces el inicio de sesión está deshabilitado para esta cuenta. Ejecutar passwd jimcomo root le solicitará una cadena de contraseña nueva y confirmada, después de lo cual el comando grep anterior debería devolver una cadena hash que representa la contraseña para jim.

También asegúrese de verificar que jim tenga un shell de inicio de sesión, establecido de manera predeterminada, y un directorio de inicio que exista.

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

Tok
fuente
"Si este comando devuelve un carácter"! ", El inicio de sesión está deshabilitado para esta cuenta" Tenga en cuenta que esto no significa que no pueda usar SSH; solo que no puede hacerlo con una contraseña (en comparación con su clave pública).
bfontaine
3

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

Usando el ejemplo anterior con el usuario jimy asuma el miembro del grupo jimcomo es solo un grupo (emita el groupscomando mientras está conectado jimpara encontrar los grupos de los que forma parte). En mi /etc/ssh/sshd_configarchivo tenía AllowGroups sshusersentrada y, por lo tanto, necesitaba agregar jimal sshusersgrupo. 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.

Joshua Fricke
fuente
1
debe mejorar su respuesta haciendo referencia a una fuente que explique mejor su ejemplo o agregando información relevante basando su ejemplo en la pregunta original de OP. por ejemplo, el usuario especificado jimcomo usuario ficticio para ayudar a proporcionar contexto. El artículo aquí lo explica bien.
0

Puede haber algunas instancias en las que PasswordAuthenticationesté deshabilitado de forma predeterminada.

Compruebe /etc/ssh/sshd_configy asegúrese de que el PasswordAuthenticationatributo esté establecido en yes.

Aldee
fuente
0

@Lekensteyn No puedo dejar un comentario a la respuesta de la pregunta porque no tengo reputación, pero intenté agregar

AllowUsers existingUser,newUser

a mi archivo / etc / ssh / sshd_config y ahora ya no puedo usar ssh tanto con mi UserUser existente como con el newUser.

ptjetty
fuente
Entiendo tu dolor: DI tuve el mismo problema una vez. Solución: AllowUsers existingUser@* newUser@*
Ismail Atkurt