O %r
e %h
no IdentityFile (~/.ssh/%r@%h_id_rsa) sempre será o mesmo que o usuário remoto e o host remoto usados para autenticar.
No exemplo, mudei Hostname
Host github.com bitbucket.org bitbucket.com
IdentityFile ~/.ssh/%r@%h_id_rsa
Hostname newhostname.com
Teste
$ ssh -Tv [email protected]
Resultado
debug1: Authenticating to github.com:22 as 'tarranjones'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa
Neste exemplo, eu mudei User
Host github.com bitbucket.org bitbucket.com
IdentityFile ~/.ssh/%r@%h_id_rsa
User git
Teste
$ ssh -Tv [email protected]
Agora o nome do host remoto não mudará, mas se ele mudar, isso significaria que o nome IdentityFile correspondente estaria errado.
debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa
Usando percent_expand
para o nome do host remoto %h
não funcionará para nomear o arquivo de identidade. Isso sempre precisará ser codificado se você quiser diferir do nome do host remoto usado para autenticar.
O melhor que eu consegui dizer é isso.
#Set Git User Domains
Host *-github.com *-bitbucket.org *-bitbucket.com
User git
#IdentityFile
Host tarranjones-*
IdentityFile ~/.ssh/tarranjones@%h_id_rsa
Host otherusername-*
IdentityFile ~/.ssh/otherusername@%h_id_rsa
#Hostnames
Host *-github.com
Hostname github.com
Host *-bitbucket.com *-bitbucket.org
Hostname bitbucket.org
Host *
Protocol 2
UseKeychain yes
AddKeysToAgent yes
IdentitiesOnly yes
Uso
$ ssh -Tv tarranjones-github.com
Resultado
debug1: Authenticating to github.com:22 as 'git'
debug1: Offering RSA public key: ~/.ssh/[email protected]_id_rsa
Por favor, consulte Gist atualizado