web-dev-qa-db-fra.com

Autoriser uniquement l'authentification par mot de passe au serveur SSH du réseau interne

J'ai un serveur OpenSSH 5.9P1 en cours d'exécution sur Ubuntu Precise 12.04 qui accepte les connexions du réseau interne et d'Internet. J'aimerais avoir besoin d'une authentification de clé publique pour les connexions à partir d'Internet, mais acceptez l'authentification de la clé publique ou du mot de passe pour les connexions du réseau interne. Puis-je configurer OpenSSH pour implémenter cela?

22
mgorven

La directive Match dans /etc/ssh/sshd_config vous permet d'appliquer sélectivement des directives de configuration. L'un des critères de correspondance disponibles est l'adresse source de la connexion, ce qui peut donc être utilisé pour implémenter ce que vous voulez. Vous pouvez désactiver l'authentification par mot de passe par défaut, puis l'activer pour les connexions des gammes IP de réseau interne. (Notez que vous souhaitez également désactiver ChallengeResponseAuthentication afin d'empêcher les mots de passe utilisés.) Cet exemple permet une authentification par mot de passe dans toutes les gammes IP privées RFC1918. Voir le Sshd_config Manpage pour plus de détails.

PasswordAuthentication no
ChallengeResponseAuthentication no

Match Address 10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
    PasswordAuthentication yes

Notez que le bloc de correspondance doit être ajouté à la fin du fichier sinon tout ce qui suit, il serait apparié jusqu'au bloc de match suivant. Le mauvais positionnement du bloc de match peut causer une incapacité à se connecter.

34
mgorven