Публично-частные ключи являются парами, вы не можете сгенерировать несколько открытых ключей для одного закрытого ключа. Таким образом, вам придется сгенерировать одну пару для каждого пользователя.
Что же касается времени истечения срока, это был дан ответ здесь . В решении используется ssh-agent, но вы также можете создать задание cron, которое удаляет ключи с сервера каждые X минут.