Connexion utilisateur (admin) refusé par SSH (AllowGroups / invalid user) après migration

What type of hardware are you using: Old laptop or computer
What YunoHost version are you running: 12.1.39
How are you able to access your server: SSH
Are you in a special context or did you perform specific tweaking on your YunoHost instance ?: Migration ancien serveur : Debian 12 + YunoHost 12, => backup complet (système + apps + données) vers nouveau serveur : Debian 12 + YunoHost 12, restauration d’une grosse archive (1,5 To). Compte principal : user (uid 1000, sudo), root désactivé à l’install Debian.

Describe your issue

Depuis la migration, impossible de se connecter en SSH avec user si AllowGroups est actif dans /etc/ssh/sshd_config.

Share relevant logs or error messages

Client :

ssh -vvv user@mon-domaine.fr
# ...
Offering public key: /home/user/.ssh/id_rsa ...
Auth. that can continue: publickey
No more authentication methods to try.
user@mon-domaine.fr: Permission denied (publickey).

Serveur (journalctl -u ssh) :

User user from ... not allowed because none of user's groups are listed in AllowGroups
Connection closed by invalid user user ... [preauth]

Donc sshd voit user comme « invalid user » et sans groupe autorisé, avant même l’étape d’auth.

Contrôles effectués

  1. Utilisateur YunoHost / Unix :
yunohost user info user        # OK, user existe
getent passwd user             # user:x:1000:1000:/home/user:/bin/bash
  1. Groupes YunoHost :
yunohost user group info admins
 members: user, AUTRE-ADMIN
  1. Permissions YunoHost :
yunohost user permission list | grep -A3 ssh
ssh.main:
  allowed: user
  1. Groupes Unix :
id user
 ... groups=1000(user), ..., 4001(admins), 5003(ssh.main)

getent group admins
 admins:*:4001:AUTRE-ADMIN,user

getent group ssh.main
 ssh.main:*:5003:user

Donc user est bien dans admins et ssh.main au niveau Unix.

  1. SSHD / AllowGroups :

/etc/ssh/sshd_config :

AllowGroups ssh.main sftp.main ssh.app sftp.app admins root

Vérifié par :

sshd -T | grep -i allowgroups
 allowgroups ssh.main
 allowgroups sftp.main
 allowgroups ssh.app
 allowgroups sftp.app
 allowgroups admins
 allowgroups root

sshd -T | grep -i pubkeyauthentication
 pubkeyauthentication yes
  1. Clé SSH et permissions :
  • Empreinte de ~/.ssh/id_rsa.pub côté client = empreinte de /home/user/.ssh/authorized_keys côté serveur.
  • Permissions :
ls -ld /home /home/user /home/user/.ssh /home/user/.ssh/authorized_keys
drwxr-xr-x  root root  ... /home
drwxr-xr-x  user user  ... /home/user
drwx------  user user  ... /home/user/.ssh
-rw-------  user user  ... /home/user/.ssh/authorized_keys

ACL nettoyées (setfacl -b).

Test décisif

En commentant AllowGroups :

#AllowGroups ssh.main sftp.main ssh.app sftp.app admins root

puis :

systemctl restart ssh

la connexion SSH avec user fonctionne immédiatement en publickey.

Conclusion : la clé et les droits sont bons, c’est uniquement le couplage AllowGroups<=> résolution des groupes qui fait échouer la connexion, alors que getent et id disent que user est dans les bons groupes.

Questions :

  • Quelqu’un a‑t‑il déjà vu ce cas sur YunoHost 12 : utilisateur présent dans YunoHost + groupes Unix corrects, mais sshd le considère comme « invalid user » et hors AllowGroups tant que cette directive est active ?

  • Y a‑t‑il des points spécifiques à vérifier côté YunoHost (LDAP ???) pour s’assurer que sshd utilise bien la même source d’utilisateurs/groupes que getent ?

  • Est‑ce qu’il est recommandé, de ne pas utiliser AllowGroups (mon instinct me dit que non) et de laisser commenté #AllowGroups dans /etc/ssh/sshd_config

@Gtom

ç fonctionne dans mon environne de dev :wink: Bon, regardons un peu
In my dev environment it works :wink: Well, let’s dig into that.

Je peux obtenir la même erreur
I can get same error than you have

User user from ... not allowed because none of user's groups are listed in AllowGroups

Mais c’est uniquement quand mon utilisateur n’a pas la permission ssh.main, si j’ajoute une autorisation pour un compte invidivuel avec la permission SSH, cela fonctionne

but this is only when my user has not the ssh.main permission , if i add a dedicated autorization for this user with ssh permission it works.

my /etc/ssh/sshd_config is like yours

AllowGroups ssh.main sftp.main ssh.app sftp.app admins root

Serait-ce en rapport avec nscld ?

could it be something with nslcd ?

Tu es toujours en YNH12, s’il s’agissait d’un passage en YNH13 j’aurais suspecté le changement de nslcd en sssd… mais ce n’est ce que tu as fait.

You are still in YNH12, if you switched to YNH13 i would suspect the change from nslcd to sssd … but that’s not what you did.

Que font
still what does

systemctl status nslcd

et
and

yunohost tools regen-conf nslcd --dry-run --with-diff

?

@Gtom

D’où provient le compte user ?

Les comptes utilisateurs posix sont dans le ldap , ici user a pour id 1000 , c’est le premier utilisateur par défaut d’une installation debian, mais pas un utilisateur de yunohost.

Comment cet utilisateur ‘user’ apparait sous yunohost ?

Quel est le compte admin par défaut ?

Je conseille de créer un utilisateur dans yunohost pour vérifier …