Je dois interdire l'access ssh (sauf localhost) pour l'user spécifié.
Alors. ssh localhost
devrait fonctionner. ssh hostname
from outside ne devrait pas fonctionner pour cet user.
Tous les autres users devraient travailler comme d'habitude.
Voir les directives AllowUsers
et DenyUsers
de la page de manuel sshd_config
(et peut-être aussi AllowGroups
et DenyGroups
).
Fondamentalement, ces directives prennent une list de templates user dans le format user@host
séparés par des espaces. Les directives ont la priorité suivante: DenyUsers
, AllowUsers
, DenyGroups
et enfin AllowGroups
.
Pour le simple cas d'autoriser un user spécifique de localhost
, seule la ligne suivante doit être ajoutée:
AllowUsers user@localhost
Cela implicitement refuser n'importe quel user de n'importe où qui n'est pas user@localhost
.
Que diriez-vous si vous forcez l'authentification par key publique pour l'user spécifique, puis restreignez sa key publique avec une option from=
dans le file de keys autorisé.
Pour forcer un user spécifique à utiliser l'authentification par key publique:
Match User Bad_User PasswordAuthentication no AuthorizedKeysFile /somewhere/the/user/cannot/touch
Et puis dans le file des keys autorisées configurer sa key comme ceci:
from=localhost ssh-rsa AAAA...
Vous pouvez en savoir plus sur les directives Match
dans man sshd_config
, et sur les options de keys autorisées dans man sshd
.
Vous pouvez utiliser PAM (UsePAM dans sshd_config) et append
account required pam_access.so
à la configuration PAM pour ssh.
Vous pouvez ensuite définir des stratégies d'access dans /etc/security/access.conf
+ : john : 127.0.0.1 ::1 - : john : ALL + : ALL : ALL
(non testé)