Da página man do 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
certificate information from the filename obtained by appending
-cert.pub to identity filenames.
Posteriormente, se estiver em um local que possa ser encontrado automaticamente pelo ssh, o caminho não precisará ser especificado. ou seja,
ssh -i ~/.ssh/id_rsa [email protected]
e
ssh [email protected]
ambos funcionarão da mesma maneira. Se você precisar encontrar o local da chave programaticamente por uma razão diferente de usar ssh (ou seja, preenchendo chaves autorizadas), você pode verificar todos os locais que o arquivo de configuração verifica e analisar o arquivo ssh_config para procurar por entradas de host individuais. Do homem 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).
Portanto, você também teria que analisar esse formato para localizar arquivos individuais (se definidos).