Onde a impressão digital do servidor SSH é gerada / armazenada?
44
Eu instalei o openssh-server e criei uma chave com ssh-keygen. Em seguida, tentei testá-lo usando o encaminhamento de porta local ssh -L 8080:www.nytimes.com:80 127.0.0.1. No entanto, a impressão digital chave que este comando fornece não é a impressão digital chave que recebo quando o faço ssh-keygen -l. Mesmo que eu exclua meu diretório .ssh, ainda assim recebo a mesma impressão digital, que não é a que eu criei ssh-keygen. Existe outra chave no meu sistema? Onde esta chave está? Como posso selecionar essa chave para uso pelo openssh-server?
Quando você faz uma sessão SSH, dois pares de chaves diferentes (com uma impressão digital para cada par) são envolvidos. Uma é a chave do usuário armazenada ~/.ssh. A identidade da chave SSH do usuário às vezes é usada como credencial para efetuar login em outro computador (se você configurou o login baseado em chave).
O outro é a chave do servidor SSH. Essa é a chave para a qual você vê a impressão digital quando se conecta a um servidor diferente pela primeira vez. A identidade dessa chave é usada para garantir que você esteja efetuando login no servidor SSH que pretende. Isso é importante se você estiver usando senhas, porque não deseja tentar acessar acidentalmente uma máquina atacante: o invasor receberá sua senha quando você a digitar. para! (isso é conhecido como "ataque do homem do meio" ). As chaves que um servidor SSH usa para se identificar quando você faz login estão localizadas /etc/ssh/e geralmente denominadas algo como ssh_host_rsa_key.
Você pode realmente mudar para onde o servidor SSH procura a chave no arquivo com a configuração./etc/ssh/sshd_configHostKey /path/to/host/key
Por padrão, ssh-keygencriará uma chave para o usuário atual, que, por padrão, será armazenada ~/.ssh. O formato de uma chave de usuário e uma chave de servidor é o mesmo; a diferença é onde eles são colocados e se /etc/ssh/sshd_confighá uma HostKeydiretiva apontando para eles. Quando você instala o pacote openssh-server, ele gera automaticamente chaves para o servidor usar. É daí que as chaves com a impressão digital desconhecida vieram. Se você quiser ver a impressão digital da chave do servidor SSH (RSA *), poderá executar ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub.
* Existem diferentes algoritmos de criptografia. Cada um usa uma chave diferente. Os comuns são DSA (fraco), RSA (padrão antigo) e ECDSA (novo padrão).
Os resultados do Google para "definir impressão digital ssh", mesmo que esses termos sejam tecnicamente incorretos, são surpreendentemente ruins. Que bom que eu encontrei isso entre eles.
Bart van Heukelom
4
Obrigado por isso. Uma observação: 'sudo' não é necessário, se você apontar ssh-keygen para a chave pública. Ou seja: ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub. Além disso, para minha instalação, era a chave ECDSA, e não a chave RSA, que o daemon ssh estava usando; portanto, o que eu precisava executar era ssh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub.
John Clements
Existe algum problema em obter as chaves públicas do meu disco rígido antigo e usá-las na minha nova instalação, substituindo-as no / etc / ssh? Uma chave é uma chave, certo?
Adam
@ Adam Não vejo problema em fazer isso. Isso deve ajudar a evitar problemas quando você vai para acessar remotamente e a chave mudou (o que acontece se você re-instalar uma nova chave é gerada.)
Azendale
3
Quando eu me conecto ssha um host a partir de 14.04 pela primeira vez, ele mostra a impressão digital MD5. Para que o ssh-keygen16.04 mostre a impressão digital MD5, você deve usar a -E md5opção
22417 jarno
15
As chaves do host SSH são armazenadas /etc/ssh/, as quais você geralmente não precisa escolher. Essas chaves foram geradas quando o pacote openssh-server foi instalado.
Você pode listar a impressão digital das chaves, ssh-keygen -l -f /etc/ssh/ssh_host_key.pubembora precise repeti-la para cada chave pública.
ssh-keygennão gera a impressão digital SSH no seu servidor. Isso é gerado pelo servidor SSH. ssh-keygencria um par de chaves pública / privada para o seu sistema que você pode usar posteriormente para acessar o servidor SSH sem precisar transmitir uma senha em texto sem formatação ao servidor.
A impressão digital do seu servidor obviamente não será exibida como a impressão digital do par de chaves pública / privada que você gerou, pois elas são separadas uma da outra.
Observe que você deve ser capaz de gerar chaves ssh para o seu servidor (ao contrário do que você diz), mas basta colocá-las no lugar certo para que sejam usadas para esse fim.
ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub
. Além disso, para minha instalação, era a chave ECDSA, e não a chave RSA, que o daemon ssh estava usando; portanto, o que eu precisava executar erassh-keygen -lf /etc/ssh/ssh_host_ecdsa_key.pub
.ssh
a um host a partir de 14.04 pela primeira vez, ele mostra a impressão digital MD5. Para que ossh-keygen
16.04 mostre a impressão digital MD5, você deve usar a-E md5
opçãoAs chaves do host SSH são armazenadas
/etc/ssh/
, as quais você geralmente não precisa escolher. Essas chaves foram geradas quando o pacote openssh-server foi instalado.Você pode listar a impressão digital das chaves,
ssh-keygen -l -f /etc/ssh/ssh_host_key.pub
embora precise repeti-la para cada chave pública.fonte
ssh-keygen
não gera a impressão digital SSH no seu servidor. Isso é gerado pelo servidor SSH.ssh-keygen
cria um par de chaves pública / privada para o seu sistema que você pode usar posteriormente para acessar o servidor SSH sem precisar transmitir uma senha em texto sem formatação ao servidor.A impressão digital do seu servidor obviamente não será exibida como a impressão digital do par de chaves pública / privada que você gerou, pois elas são separadas uma da outra.
fonte