Como posso especificar a ordem em que o cliente SSH do OpenSSH (OpenSSH_7.5p1, OpenSSL 1.0.2k 26 de janeiro de 2017; Git para Windows v2.11.1) oferece os pares de chaves pública/privada para um daemon compatível com SSH, como Apache Mina SSHD (Gerrit Serviço de Revisão de Código). Minha intenção é tentar autenticar com um par de chaves pública/privada Ed25519 antes de voltar ao RSA.
Dados os seguintes pares de chaves públicas/privadas padrão Ed25519 e RSA abaixo do diretório inicial do usuário:
~/.ssh/id_ed25519{,.pub}
~/.ssh/id_rsa{,.pub}
e as seguintes seções de Host no arquivo de configuração SSH do usuário (~/.ssh/config):
Host foobar foobar.example.com
Hostname foobar.example.com
IdentityFile ~/.ssh/id_ed25519
Host *
IdentityFile ~/.ssh/id_ed25519
IdentityFile ~/.ssh/id_rsa
ao testar a conexão SSH no modo de depuração:
$ ssh -Tv bob@foobar
debug1: Reading configuration data ~/.ssh/config
debug1: ~/.ssh/config line 49: Applying options for foobar
debug1: ~/.ssh/config line 63: Applying options for *
debug1: Authentications that can continue: publickey
debug1: Next authentication method: publickey
debug1: Offering RSA public key: ~/.ssh/id_rsa
debug1: Authentications that can continue: publickey
debug1: Offering ED25519 public key: ~/.ssh/id_ed25519
debug1: Server accepts key: pkalg ssh-ed25519 blen 51
debug1: Authentication succeeded (publickey).
Posso ver que o cliente SSH do OpenSSH oferece primeiro o par de chaves pública/privada RSA. Mas por que não primeiro Ed25519?
Adicionar
IdentitiesOnly
opção. Sem esta opção, o SSH tenta primeiro as chaves ssh padrão disponíveis:id_rsa
,id_dsa
,id_ecdsa
. Para alterar esse comportamento, substitua sua configuração por esta: