Déterminer si un utilisateur utilise une authentification SSH par mot de passe ou par clé
Imaginez ce scénario. Vous venez de configurer l'authentification par clé SSH sur votre serveur Linux. Et ensuite, vous avez décidé de désactiver complètement l'authentification par mot de passe et de n'autoriser que l'authentification par clé pour tous les utilisateurs. Avant de désactiver l'authentification par mot de passe, vous aimeriez vérifier quels utilisateurs utilisent encore des mots de passe pour accéder au serveur via SSH. Comment allez-vous faire cela ? Eh bien, c'est possible ! Ce guide bref explique comment vérifier si un utilisateur utilise l'authentification SSH par mot de passe ou par clé sur Linux.
Déterminer si un utilisateur utilise une authentification SSH par mot de passe ou par clé
Nous pouvons identifier si un utilisateur est connecté à un serveur Linux via SSH en utilisant un mot de passe ou une clé SSH. Ce n'est pas une méthode fiable et garantie à 100%, mais c'est quand même une bonne approche.
Tout d'abord, vérifiez si le fichier ~/.ssh/authorized_keys existe. En effet, dans la méthode d'authentification basée sur la clé SSH, la clé publique SSH doit être téléchargée sur les systèmes auxquels vous souhaitez accéder via SSH. Les clés publiques sont généralement stockées dans un fichier appelé ~/.ssh/authorized_keys sur les systèmes distants. Si ce fichier existe, il est probable que l'utilisateur utilise l'authentification basée sur les clés.
Ensuite, vérifiez les fichiers journaux d'authentification pour vérifier quelle méthode d'authentification l'utilisateur utilise actuellement pour accéder au système à distance. La méthode d'authentification est enregistrée dans le fichier "/var/log/secure" sur les systèmes basés sur RPM (par exemple CentOS), et dans le fichier "/var/log/auth.log" sur les systèmes basés sur DEB (par exemple Ubuntu).
Il suffit de chercher l'entrée du mot de passe dans les fichiers journaux d'authentification en utilisant la commande grep ou toute autre méthode que vous préférez.
$ grep 'password' /var/log/secureOu,
$ grep 'password' /var/log/auth.logExemple de sortie :
[...]
May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2
May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2Avez-vous remarqué les lignes "Accepted password for ..." dans la sortie ci-dessus ? Cela signifie que l'utilisateur accède aux systèmes distants en utilisant un mot de passe. D'après la sortie ci-dessus, les utilisateurs "senthil" et "sk" accèdent au système distant en utilisant l'authentification par mot de passe ssh.
Si l'utilisateur utilise l'authentification par clé, vous verriez probablement une sortie comme ci-dessous :
May 8 10:40:56 ostechnix sshd[3405]: Accepted publickey for sk from 192.168.225.37 port 41992 ssh2Bien sûr, c'est un peu difficile si le fichier journal est très long avec un grand nombre d'entrées. Dans ce cas, utilisez la commande "tail" pour afficher un nombre particulier de fichiers journaux.
Par exemple, la commande suivante n'affichera que les 10 dernières entrées du fichier journal :
$ grep 'password' /var/log/auth.log | tail -n 10Exemple de sortie :
May 8 10:21:49 ostechnix sshd[2135]: Accepted password for senthil from 192.168.225.37 port 41920 ssh2
May 8 10:21:57 ostechnix sshd[2222]: Accepted password for sk from 192.168.225.37 port 41922 ssh2
May 8 10:24:57 ostechnix sshd[2360]: Accepted password for senthil from 192.168.225.37 port 41924 ssh2
May 8 10:25:04 ostechnix sshd[2448]: Accepted password for sk from 192.168.225.37 port 41926 ssh2
May 8 10:29:40 ostechnix sshd[2663]: Accepted password for senthil from 192.168.225.37 port 41938 ssh2
May 8 10:29:55 ostechnix sshd[2765]: Accepted password for sk from 192.168.225.37 port 41940 ssh2
May 8 10:39:34 ostechnix sshd[3064]: Accepted password for senthil from 192.168.225.37 port 41986 ssh2
May 8 10:39:55 ostechnix sshd[3184]: Accepted password for sk from 192.168.225.37 port 41988 ssh2
May 8 10:40:36 ostechnix sshd[3303]: Accepted password for senthil from 192.168.225.37 port 41990 ssh2
May 8 10:40:56 ostechnix sshd[3405]: Accepted password for sk from 192.168.225.37 port 41992 ssh2Vous pouvez également utiliser le drapeau -f pour suivre le journal pendant que vous testez.
$ grep 'password' /var/log/auth.log | tail -f -n 10Si vous voulez vérifier tout le fichier journal pour trouver les entrées "password" page par page, utilisez la commande "less" :
$ grep 'password' /var/log/auth.log | lessPour trouver tous les journaux relatifs à sshd (tentatives réussies ou échouées), remplacez "password" par "sshd" dans toutes les commandes ci-dessus.
$ grep 'sshd' /var/log/auth.log | tail -n 10Autres guides liés à SSH :
- Autoriser ou refuser l'accès SSH à un utilisateur ou groupe particulier sous Linux
- Limiter le nombre de connexions SSH par utilisateur/groupe/système
- Restreindre l'accès aux serveurs Linux en utilisant TCP Wrappers
- Exécuter des commandes sur des systèmes Linux distants via SSH
- Comment créer un alias SSH sous Linux
- Comment se connecter en SSH à un répertoire particulier sur Linux
- SSLH – Partager un même port pour HTTPS et SSH
- ScanSSH – Serveur SSH Rapide et Scanner de Proxy Ouvert
- Comment reprendre des fichiers partiellement transférés via SSH en utilisant Rsync
- Comment exécuter une seule commande sur plusieurs systèmes distants à la fois
- DSH – Exécuter une commande Linux sur plusieurs hôtes en même temps
- Comment empêcher une session SSH de se déconnecter sous Linux
- Comment activer SSH sur FreeBSD
J'espère que cela aide.
