I have not used it before, but it seems like it follows your requirements (Except auth using SSH keys maybe, but that could be a task for e.g. Nginx)