I know about the -v, -vv etc. options, but I'd like to know before I try how ssh is going to behave. There must be a saner method to find out than trial and error.
Use a fonte, Luke!
O OpenSSH é de código aberto, portanto, em vez de tentativa de erro, você pode ler o código para entender melhor o que está acontecendo lá. ssh.c
é um bom lugar para começar. Tem uma função load_public_identity_files(void)
, que cuida disso. Em primeiro lugar, as chaves do PKCS # 11 (Smartcard, HSM) são usadas:
(nkeys = pkcs11_add_provider(options.pkcs11_provider, NULL,
e, em seguida, as chaves fornecidas por options.identity_files
:
for (i = 0; i < options.num_identity_files; i++) {
Esta variável está definida em readconf.c
:
if (options->num_identity_files == 0) {
add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_RSA, 0);
add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_DSA, 0);
#ifdef OPENSSL_HAS_ECC
add_identity_file(options, "~/", _PATH_SSH_CLIENT_ID_ECDSA, 0);
#endif
add_identity_file(options, "~/",
_PATH_SSH_CLIENT_ID_ED25519, 0);
}
Os caminhos reais dos arquivos são definidos em pathnames.h
:
#define _PATH_SSH_USER_DIR ".ssh"
[...]
#define _PATH_SSH_CLIENT_ID_DSA _PATH_SSH_USER_DIR "/id_dsa"
#define _PATH_SSH_CLIENT_ID_ECDSA _PATH_SSH_USER_DIR "/id_ecdsa"
#define _PATH_SSH_CLIENT_ID_RSA _PATH_SSH_USER_DIR "/id_rsa"
#define _PATH_SSH_CLIENT_ID_ED25519 _PATH_SSH_USER_DIR "/id_ed25519"
Para a questão de fundo:
É exatamente por isso que a opção IdentitiesOnly
existe e por que você deve usá-la no ~/.ssh/config
se tiver mais de uma chave para gerenciar. As identidades ssh-agent
são usadas após as identidades padrão.