web-dev-qa-db-fra.com

Que signifie le type de fichier d'identité dans les messages de débogage SSH?

J'ai débogué une connexion SSH à l'aide de la commande suivante:

ssh -vT [email protected]

Et j'ai reçu les messages suivants:

debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 48: Applying options for *
debug2: ssh_connect_direct: needpriv 0
debug1: Connecting to smilescooter.com port 22.
debug1: Connection established.
debug1: identity file /Users/jerry/.ssh/id_rsa type 0
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_rsa-cert type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_dsa type -1
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_dsa-cert type -1
debug1: identity file /Users/jerry/.ssh/id_ecdsa type 2
debug1: key_load_public: No such file or directory
debug1: identity file /Users/jerry/.ssh/id_ecdsa-cert type -1
...
debug3: hostkeys_foreach: reading file "/Users/jerry/.ssh/known_hosts"
debug3: record_hostkey: found key type ECDSA in file /Users/jerry/.ssh/known_hosts:19
debug3: load_hostkeys: loaded 1 keys from smilescooter.com
debug3: order_hostkeyalgs: prefer hostkeyalgs: [email protected],[email protected],[email protected],ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521
debug3: send packet: type 20
debug1: SSH2_MSG_KEXINIT sent
debug3: receive packet: type 20
debug1: SSH2_MSG_KEXINIT received
debug2: local client KEXINIT proposal

Heureusement, le problème a été résolu, mais je suis intéressé par le type de "fichier d'identité file_route n "moyenne, n ici pourrait être -1,0,1,2 ...

Et que signifie le nombre (1/2/3 ..) après debug au début de chaque ligne de débogage?

Je ne le demanderais pas ici si j'avais trouvé des résultats googler à ce sujet. Il y a beaucoup de résultats dans Google concernant le débogage des problèmes SSH, mais personne ne semble parler des deux que j'ai demandés ici.

Merci d'avance.

6
xczzhh

Le fichier d'identité est simplement une clé privée (ou cert), généralement créée en exécutant ssh-keygen. Cela créera par défaut une clé RSA, mais vous pouvez le changer avec l'option -t. Selon votre résultat, vous disposez d'une clé RSA et d'une clé ECDSA.

Le nombre dans identity file type .../.ssh/id_* type <number> est simplement la valeur entière (à base zéro) de sshkey_types enum et -1 signifie erreur (comme avec la plupart des fonctions POSIX). Vous pouvez voir que les noms de fichiers contiennent également le type de clé:

enum sshkey_types {
KEY_RSA, // id_rsa has type 0
KEY_DSA, // id_dsa has type 1, but as you have no id_dsa key file, -1 is used 
KEY_ECDSA, // id_ecdsa has type 2
...

Les messages d'erreur key_load_public: Aucun fichier ni répertoire après le fichier d'identité ... messages est étrange, il semble que les fichiers de clé publique correspondants aient été supprimés. Ils portent le même nom de fichier que la clé privée avec le suffixe .pub ajouté. Ce n'est pas tragique, car la clé publique peut être régénérée à partir de la clé privée (mais pas l'inverse, pour des raisons évidentes) avec ssh-keygen -y.

La sortie de débogage est expliquée dans ce Nice article de Wikibooks sur la journalisation OpenSSH . En bref: Le nombre dans le préfixe de ligne [123]: ... indique le niveau de débogage du message derrière celui-ci. Cela correspond au nombre de -vs que vous avez indiqués sur la ligne de commande (3 étant le maximum). Par exemple, si vous définissez -v, les messages debug1 seront imprimés, avec -vv vous obtiendrez debug1 et debug2 etc. (C'est un peu étrange que vous obteniez debug3 messages même si vous n’avez donné qu’un seul -v, cependant)

6
Jakob

Comme le suggère la sortie, "type n" est l'ID interne du type de clé (RSA, ECDSA, ED25519, etc.). La liste peut être vue dans sshkey.c .

De même, le n après debug correspond au niveau de débogage. La sortie que vous avez affichée correspond à -vvv ou à la journalisation de débogage jusqu'au niveau 3 (maximum), d'où debug1, debug2 et debug3.

Les détails complets des deux ne sont généralement utiles que pour les développeurs OpenSSH (principalement les développeurs OpenBSD), je ne m'attendrais donc pas à ce que cela soit discuté couramment.

2
muru