Pregunta ¿Cómo creas una clave ssh para otro usuario?


Estoy tratando de crear una clave ssh para otro usuario. Estoy conectado como root. ¿Puedo editar los archivos generados por ssh-keygen y cambiar la raíz al usuario que quiero?


76
2017-10-22 19:24


origen


Si genera la clave para el usuario, también debe tener un método seguro para obtener la clave privada y su contraseña para el usuario. Mucho mejor, el usuario genera la clave y luego le envía la clave pública por correo electrónico. - Iain
¿Pero no es tan difícil si no permites los inicios de sesión de contraseña? Si solo soy clave, y configuro un nuevo usuario, no pueden iniciar sesión para configurar su clave. - LVLAaron


Respuestas:


Podrías hacer eso con ssh-keygenSin embargo, recuerde que la clave privada debe ser privada para el usuario, por lo que debe tener mucho cuidado de mantenerla segura, tan segura como la contraseña del usuario. O incluso más seguro, ya que no es probable que el usuario deba cambiarlo al iniciar sesión por primera vez.

ssh-keygen -f anything Crea dos archivos en el directorio actual. anything.pub es la clave pública, que puede adjuntar al usuario ~/.ssh/authorized_keys en cualquier servidor de destino.

El otro archivo, acaba de llamar anything Es la clave privada y, por lo tanto, debe almacenarse de forma segura para el usuario. La ubicación por defecto sería ~username/.ssh/id_rsa (aquí llamado id_rsa, que es por defecto para las claves rsa). Recuerda que el .ssh el directorio no puede ser legible ni escribible por nadie más que el usuario, y el directorio de inicio del usuario no puede ser escribible por nadie más que el usuario. Del mismo modo, los permisos también deben estar ajustados en la clave privada: lectura / escritura solo para el usuario, y el directorio .ssh y el archivo de clave privado deben ser propiedad del usuario.

Técnicamente se podría guardar la llave en cualquier lugar. Con ssh -i path/to/privatekey podría especificar esa ubicación, mientras se conecta. Nuevamente, la propiedad y los permisos adecuados son críticos y ssh no funcionará si no los tiene correctamente.


74
2017-10-22 19:35



+1 por expresar que es una clave privada (!) - mailq
Usted está asumiendo que el usuario es una persona real. Si el inicio de sesión es un usuario no interactivo utilizado para realizar tareas de utilidad (por ejemplo, ejecutar maine scripts en servidores remotos), entonces sí, probablemente generaría la clave para ese usuario manualmente. Por supuesto, eso tiene sus propias implicaciones de seguridad, pero esa es otra historia. - Rilindo
@Rilindo ssh -i a una clave privada para un proceso no privilegiado es cómo manejo más que unos pocos procesos de copia de seguridad rsync automatizados. :) - Shadur
No me gusta ese tipo de respuesta que dice "no deberías hacer eso", pero no respondas la pregunta. Si bien esto puede ser correcto y útil para el contexto de la pregunta original, otras personas pueden tener la misma pregunta en una situación diferente. "Las claves ssh nunca deberían generarse para otro usuario": Eso es cierto en el caso simple. Pero considere las múltiples identidades de la misma persona física, por ejemplo. Puede haber varias cuentas en varios sistemas, no todas ellas lo que le permite generar claves o permitir proteger las claves privadas de manera apropiada. - Gustave
userso user's - User


Hay No hay información de usuario en las claves SSH.

El último campo en una clave pública es un comentario (y se puede cambiar ejecutando el siguiente comando ssh-keygen -C newcomment).

No es necesario hacer nada especial para crear una clave para otro usuario, solo colóquelo en la ubicación correcta y establezca los permisos.


108
2017-10-22 19:55



Esa es la respuesta correcta. - sebnukem
Acabo de probar y confirmar, no solo es un comentario, sino que también puede eliminarse y las teclas siguen funcionando. ¡Siempre pensé que importaba! Gracias por dar la respuesta correcta. Al igual que los comentarios anteriores, tengo una razón para crear claves para otros usuarios, pero no digo por qué, así que no hay discusión. - FreeSoftwareServers


Conviértete en el usuario usando su y ejecute la clave como ese usuario:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

16
2017-10-22 19:35



¿Por qué especificar el DSA? - Ram
Whoops, fuerza del hábito. Déjame actualizar. - Rilindo
debe utilizar rsa (o posiblemente una de las variantes de curva elíptica). dsa está limitado a tamaños de clave inseguros. rsa1 es un formato heredado para ssh1 que nadie debería usar más. - Peter Green
Mi joeuser es un usuario del servicio, por lo tanto no puedo iniciar sesión como ellos. ¿Cómo permito que un usuario del servicio (que solo ejecuta procesos) tenga una clave ssh? - Jonathan
@JonathanLeaders Usted especificaría el shell para el usuario cuando se convierta en ese usuario. Algo como esto: `` `[root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Usuario de FTP: / var / ftp: / sbin / nologin [raíz @ ip-10-254-41-211 ~] # su - ftp su: advertencia: no se puede cambiar el directorio a / var / ftp: no existe tal archivo o directorio. Esta cuenta no está disponible actualmente. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ `` ` - Rilindo


Como se vio aquí, puede usar chmod para cambiar los permisos de lectura de la carpeta del usuario al que desea agregar la clave SSH.

vim /home/username/.ssh/authorized_keys

Luego, simplemente pegue la clave en una nueva línea en la parte inferior de ese archivo


5
2018-01-09 23:42



Link está muerto ... - Nyxynyx