Estamos ejecutando CentOS 6.9 con OpenSSH_5.3p1 y creamos cuentas chroot para usuarios externos con el mismo directorio de inicio (montado en htdocs). El problema es que el archivo .ssh/authorized_keys2
es propiedad del primer usuario (y esto ya funciona). ¿Cómo puedo hacer que funcione para otro usuario?
Intenté agregar un AuthorizedKeysFile
sshd_config con múltiples rutas de archivo y recibí el error garbage at end of line
.
Intenté agregar una AuthorizedKeysFile
entrada sshd_config
en el bloque de coincidencias del segundo usuario y recibí el error 'AuthorizedKeysFile' is not allowed within a Match block
.
No puedo cambiar el directorio de inicio porque, de lo contrario, la ruta es diferente de la ruta real para el desarrollo.
¿Alguna sugerencia de cómo solucionarlo? ¿Es posible que tenga que actualizar OpenSSH a una versión más nueva que admita múltiples entradas AuthorizedKeysFile
(creo que tengo que compilarlo con rpm)? ¿Qué pasa con las actualizaciones de seguridad posteriores?
Respuesta1
Una opción es utilizar tokens para darle a cada usuario un authorized_keys
archivo único.
AuthorizedKeysFile
Especifica el archivo que contiene las claves públicas que se pueden utilizar para la autenticación de usuarios. El formato se describe en la sección FORMATO DE ARCHIVO AUTHORIZED_KEYS de
sshd(8)
.AuthorizedKeysFile
puede contener tokens del tipo%T
que se sustituyen durante la configuración de la conexión. Se definen los siguientes tokens:%%
se reemplaza por un literal%
,%h
se reemplaza por el directorio de inicio del usuario que se autentica y%u
es reemplazado por el nombre de usuario de ese usuario. Después de la expansión,AuthorizedKeysFile
se considera una ruta absoluta o relativa al directorio de inicio del usuario. Es posible que se muestren varios archivos, separados por espacios en blanco. Alternativamente, esta opción puede configurarse paranone
omitir la verificación de claves de usuario en los archivos. El valor predeterminado es.ssh/authorized_keys .ssh/authorized_keys2
.
El énfasis es mío.
Entonces puedes configurar:
AuthorizedKeysFile .ssh/%u_authorized_keys
Luego, para el usuario, foo
cree un authorized_keys
archivo .ssh/foo_authorized_keys
.
Una nota sobre los permisos
Dehombre sshd:
~/.ssh/authorized_keys
...
Si otros usuarios pueden escribir en este archivo, el~/.ssh
directorio o el directorio de inicio del usuario, entonces el archivo podría ser modificado o reemplazado por usuarios no autorizados. En este caso, sshd no permitirá su uso a menos que laStrictModes
opción esté configurada enno
.
Por lo tanto, es posible que tengas que dejar las llaves afuera .ssh/
o configurarlas StrictModes
en no
. Si configura StrictModes
para no
asegurarse de que otro usuario no pueda crear una authorized_keys
para otra persona o eliminar las claves autorizadas del otro usuario. Probablemente sea mejor hacer algo como:
AuthorizedKeysFile .ssh_%u/authorized_keys
Cree un directorio .ssh_foo/
para el usuario foo
, que solo foo
pueda leer/escribir.
Puedes elegir si quieres permitir también .ssh/authorized_keys
usando
AuthorizedKeysFile .ssh/authorized_keys .ssh_%u/authorized_keys
Esto permitirá que la forma "normal" authorized_keys
siga funcionando, y el authorized_keys
archivo debe ser propiedad de su usuario y tener los permisos correctos o será ignorado. Aún así, considere que no debería ser posible crear un authorized_keys
archivo para otro usuario, lo que podría significar simplemente tocar el archivo como raíz para que esté vacío.