web-dev-qa-db-fra.com

vérifier la configuration sshd

Comment puis-je vérifier la configuration de sshd?

Par exemple, je veux m'assurer que ces paramètres sont définis et appliqués:

AllowUsers user1 user2 
PasswordAuthentication no
PermitRootLogin no

Est le seul moyen de vérifier manuellement le contenu du fichier sshd_config, ou puis-je sonder sshd pour m'assurer?

21
JuanPablo

Il existe un mode de test étendu, appelé avec l'option de ligne de commande -T, qui fait cela. Par exemple:

% Sudo sshd -T | egrep -i 'allowusers|passwordauth|permitroot'
permitrootlogin yes
passwordauthentication yes

L'option existe dans Portable OpenSSH depuis 2008, cf. commit e7140f2 . Celui-ci a été publié avec 5.1p1, réalisé en juillet 2008, cf. notes de version pour 5.1 , il existe donc dans presque toutes les installations de serveurs OpenSSH prises en charge aujourd'hui.

29
Josip Rodin

Bien que cela ne videra pas toutes vos définitions de serveur, vous pouvez essayer de vous connecter au serveur avec un indicateur de débogage détaillé: ssh -v user@server. Cela vous donnera beaucoup d'informations qui refléteront les options activées dans la configuration sshd.

Par exemple, jetez un œil à la sortie de cette connexion avec le commutateur - v (signatures de clés, domaine et adresses IP délibérément déguisés):

OpenSSH_6.0p1, OpenSSL 0.9.8w 23 Apr 2012
debug1: Reading configuration data /home/claudio/.ssh/config
debug1: /home/claudio/.ssh/config line 13: Applying options for serv01
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to somedomain.com [185.113.29.221] port 22.
debug1: Connection established.
debug1: identity file /home/claudio/.ssh/id_dsa type 2
debug1: identity file /home/claudio/.ssh/id_dsa-cert type -1
debug1: Remote protocol version 2.0, remote software version OpenSSH_5.9
debug1: match: OpenSSH_5.9 pat OpenSSH_5*
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.0
debug1: SSH2_MSG_KEXINIT sent
debug1: SSH2_MSG_KEXINIT received
debug1: kex: server->client aes128-ctr hmac-md5 none
debug1: kex: client->server aes128-ctr hmac-md5 none
debug1: sending SSH2_MSG_KEX_ECDH_INIT
debug1: expecting SSH2_MSG_KEX_ECDH_REPLY
debug1: Server Host key: ECDSA 3a:0d:b8:18:ca:67:4c:54:0f:c8:b2:1e:48:53:69:28
debug1: Host '[somedomain.com]:22' is known and matches the ECDSA Host key.
debug1: Found key in /home/claudio/.ssh/known_hosts:7
Warning: Permanently added the ECDSA Host key for IP address '[185.113.29.221]:22' to the list of known hosts.
debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password,keyboard-interactive
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /home/claudio/.ssh/id_dsa
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: Authentication succeeded (publickey).
Authenticated to somedomain.com ([185.113.29.221]:22).
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.

De là, vous pouvez voir les méthodes d'authentification autorisées: publickey, mot de passe, clavier interactif. Vous pouvez également voir que l'itinérance n'est pas autorisée par ce serveur et que l'utilisateur claudio pourrait se connecter en utilisant sa clé publique.

Vous pouvez augmenter le niveau de sortie d'informations en spécifiant plus de lettres "v", mais vous obtiendrez alors bien plus d'informations de bas niveau que vous ne le souhaiteriez probablement.

4
Claudio

la configuration de sshd se trouve généralement dans le fichier suivant: /etc/ssh/sshd_config.

Pour interroger la configuration d'exécution, vous pouvez utiliser le mode de test étendu sshd -T qui vous permet également de tester la correspondance des paramètres client.

3
gparent

il n'y a aucun moyen connu d'interroger la configuration d'une instance sshd en cours d'exécution, je pense, si vous faites référence au serveur openssh. en fonction de ce que vous voulez faire, vous pouvez utiliser l'indicateur -t pour tester un fichier de configuration pour vous assurer qu'il est valide avant de redémarrer le serveur, afin de ne pas vous faire virer, en particulier. si vous n'avez pas d'accès hors bande au serveur.

2
johnshen64

Le problème avec la recherche du fichier/etc/ssh/sshd_config comme suggéré par d'autres réponses est qu'il ne contient pas nécessairement toute la configuration. Ce fichier contient les valeurs de toutes les variables de configuration que vous souhaitez définir pour outrepasser les valeurs par défaut et, tel qu'il est fourni, contient en tant que commentaires les valeurs par défaut intégrées à sshd.

Si un fichier de configuration personnalisé est installé à la place de la version fournie, vous perdez de vue les valeurs par défaut qui sont compilées dans sshd, et s'il s'agit d'une version personnalisée, les valeurs par défaut peuvent ne pas correspondre aux commentaires dans sshd_config qui sont visibles.

De plus, il est parfaitement possible d'exécuter sshd avec un autre fichier de configuration avec l'option -f, de sorte que celui stocké dans/etc/ssh/sshd_config peut ne pas refléter les paramètres actuels.

Cela rend la question tout à fait valable et, à ma connaissance, impossible à répondre avec certitude.

2
Peter Gathercole