¿Cómo se crea una clave ssh para otro usuario?


90

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?


55
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 simplemente le envía por correo electrónico la clave pública.
user9517

¿Pero no es tan difícil si no permite el inicio de sesión con contraseña? Si solo tengo clave y configuro un nuevo usuario, no pueden iniciar sesión para configurar su clave.
LVLAaron

Respuestas:


79

ssh-keygenSin embargo, puede hacerlo con , recuerde que la clave privada está destinada a ser privada para el usuario, por lo que debe tener mucho cuidado de mantenerla 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 anythingcrea dos archivos en el directorio actual. anything.pubes la clave pública, que puede agregar al usuario ~/.ssh/authorized_keysen cualquier servidor de destino.

El otro archivo, recién llamado, anythinges la clave privada y, por lo tanto, debe almacenarse de forma segura para el usuario. La ubicación predeterminada sería ~username/.ssh/id_rsa(aquí llamada id_rsa, que es la predeterminada para las claves rsa). Recuerde que el .sshdirectorio 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 ser estrictos en la clave privada: lectura / escritura solo para el usuario, y el directorio .ssh y el archivo de clave privada deben ser propiedad del usuario.

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


44
+1 por expresar que es una clave privada (!)
mailq

51
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, ejecutando scripts maine 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

2
@Rilindo ssh -ia una clave privada para un proceso no privilegiado es cómo manejo más de unos pocos procesos de copia de seguridad rsync automatizados. :)
Shadur

99
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 múltiples identidades de la misma persona física, por ejemplo. Puede haber múltiples cuentas en múltiples sistemas, no todas ellas permitiéndole generar claves o proteger adecuadamente las claves privadas.
Gustave

usersouser's
Usuario el

135

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, simplemente colóquelo en la ubicación correcta y establezca los permisos.


55
Esa es la respuesta correcta.
sebnukem

1
Acabo de probar y confirmar, no solo es solo un comentario, sino que se puede eliminar y las teclas aún funcionan. ¡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 diré por qué, por lo que no hay argumento.
FreeSoftwareServers

18

Conviértase en usuario utilizando 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):

¿Por qué especificar el DSA?
Ram

Vaya, fuerza de la costumbre. Déjame actualizar
Rilindo

44
debería usar rsa (o posiblemente una de las variantes de curva elíptica). dsa está limitado a tamaños de claves inseguros. rsa1 es un formato heredado para ssh1 que ya nadie debería usar.
Peter Green

My joeuseres 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 Debería especificar 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 FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: advertencia: no se puede cambiar el directorio a / var / ftp: no existe dicho 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

6

Como se ve 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


1
Link está muerto ...
Nyxynyx
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.