Comment find par programme la key ssh par défaut?

Dans la plupart de mes expériences, par défaut, ssh regardera dans ~ / .ssh / id_rsa (.pub) pour la paire de keys par défaut.

Parfois, j'essaie d'écrire des scripts pour profiter de cet location de key par défaut, mais je finis par le coder (par exemple, DEFAULT_KEY_LOCATION="${HOME}/.ssh/id_rsa" ou quelque chose comme ça), ce qui me semble être un BadThing ™.

Existe-t-il des variables ou des sorties d'environnement à partir des outils ssh qui peuvent me dire quelle est l'location des keys par défaut des users?

Par exemple, y a-t-il des commands comme ssh-defaults --key-location ou variables d'environnement $ SSH_DEFAULT_KEY?

De la page man pour ssh:

  -i identity_file Selects a file from which the identity (private key) for public key authentication is read. The default is ~/.ssh/identity for protocol version 1, and ~/.ssh/id_dsa, ~/.ssh/id_ecdsa and ~/.ssh/id_rsa for protocol version 2. Identity files may also be specified on a per-host basis in the configuration file. It is possible to have multiple -i options (and multiple identities specified in configuration files). ssh will also try to load certificatee information from the filename obtained by appending -cert.pub to identity filenames. 

Par la suite, si elle se trouve dans un location qui peut être trouvé automatiquement par ssh, le path ne doit pas être spécifié du tout. c'est à dire

 ssh -i ~/.ssh/id_rsa foo@bar.com 

et

 ssh foo@bar.com 

fonctionneront tous deux de la même manière. Si vous devez find l'location de la key par programmation pour une autre raison que l'utilisation de ssh (c'est-à-dire le remplissage des keys autorisées), vous pouvez vérifier tous les locations que le file de configuration vérifie et parsingr le file ssh_config pour searchr les inputs individuelles de l'hôte. De l'homme ssh_config:

  The file name may use the tilde syntax to refer to a user's home directory or one of the following escape characters: '%d' (local user's home directory), '%u' (local user name), '%l' (local host name), '%h' (remote host name) or '%r' (remote user name). 

Vous devriez donc parsingr ce format pour localiser les files individuels (si définis).