Ao especificar explicitamente o arquivo de identidade para ssh:
ssh -i ./id_rsa ...
Eu tenho essas linhas no rastreamento de depuração ssh:
debug1: Offering public key: ./id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
Isso significa que o ssh-generator também id_rsa
contém expoente público de RSA? id_rsa
O formato parece ser bastante explícito que contém chave privada com o bloco "BEGIN PRIVATE KEY"; portanto, "oferecer chave pública" deve significar algo diferente de "enviar a chave pública ao servidor".
EDITAR:
Para esclarecer, quero saber o que exatamente está acontecendo por trás da linha "oferta de chave pública". Se o cliente possuir várias chaves, todas elas serão oferecidas ao servidor uma a uma.
Respostas:
para conectar-se a um servidor SSH e autenticar com seu par de chaves público / privado, você deve primeiro compartilhar sua chave pública com o servidor.
isso é feito copiando a chave pública da sua chave privada para o servidor e adicionando-a
~/ssh/authorized_keys
copiando / colando, copiandoid_rsa.pub
para~/.ssh/authorized_keys
o servidor ou comcat id_rsa.pub >> ~/.ssh/authorized_keys
, anexando-a à lista.quando você se conecta, o servidor usa sua chave pública para assinar um desafio e seu cliente usa sua chave privada
id_rsa
para descriptografar o desafio, criptografá-lo novamente com o público do servidorhost key
e enviá-lo de volta.o host verifica se você descriptografou o desafio corretamente, descriptografando sua resposta com sua chave privada, e o cliente / host estabelece uma conexão criptografada, com base nos dados compartilhados, não nas chaves públicas / privadas.
em NENHUM PONTO, na troca, sua chave privada ou a chave privada do host foram trocadas ou reveladas uma à outra. sua chave pública É armazenada no servidor, mas é por isso que é uma chave PÚBLICA.
fonte
ssh -i keyname
está dizendo ao cliente ssh exatamente qual chave você planeja usar para se conectar ao servidor. se você tiver uma dúzia de chaves em~/.ssh/
seu cliente, NÃO iterará em cada chave. procurará~/.ssh/id_rsa
,~/.ssh/id_dsa
potencialmente alguns outros nomes de arquivos codificados no cliente, ou qual chave é especificada para esse host em~/.ssh/config
... breve história; seu cliente não está / oferecendo / nenhuma chave para o servidor.~/.ssh/authorized_keys
host, sabe qual é o desafio e o que ele está procurando pois, assim que uma chave pública a desbloqueia, ela sabe usá-la.A criptografia de chave pública / privada é baseada em um sistema muito simples:
Você tem uma chave pública capaz de executar criptografia unidirecional e uma chave privada capaz de criptografar. A chave pública pode ser dada a todos no mundo, e ninguém poderá descriptografar seus dados criptografados, embora eles possam criptografar dados que você pode descriptografar com sua chave privada.
Portanto, a resposta para sua pergunta é "Sua chave pública".
fonte
Acho que não deveria estar enviando a chave pública ou privada no momento. Uma criptografia deve ser executada pelo cliente usando a chave privada em texto sem formatação que já é conhecido pelo servidor. O host pode descriptografar essa mensagem usando a chave pública, sabendo que o único que poderia ter criptografado adequadamente é um cliente que detém a chave privada correspondente, autenticando o cliente.
Acredito que diz
Offering public key: ./id_rsa
porque usa a chave privada (armazenada em./id_rsa
) para executar uma criptografia em texto sem formatação conhecida pelo servidor e, em seguida, o servidor usará a chave pública para descriptografar esse texto cifrado e confirmar se ele corresponde ao texto sem formatação. O arquivo de chave pública./id_rsa.pub
nunca deve ser necessário pelo cliente após a geração inicial da chave. Isso é usado apenas pelo servidor para descriptografia.fonte