Comment limiter l'access ssh pour localhost uniquement?

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é)