Qual o significado do usuário / host no final de um arquivo de chave pública SSH?

74

Não consigo descobrir por que um arquivo de chave pública SSH gerado por ssh-keygenpossui um usuário e um host no final dele.

Exemplo: id_rsa.pub

ssh-rsa ... rest of file ... /CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

Observe o root@mydomainno final do arquivo.

Se eu puder usar a chave pública em qualquer lugar com qualquer usuário para autenticar usando minha chave privada, qual o significado do root @ mydomain no processo de autenticação?

Ou é apenas um espaço reservado para descobrir quem foi emitido por quem?

Manjericão A
fonte
2
Eu já vi alguns formulários da web superzelosos que exigem o campo de comentário incluir um símbolo @, mas não há nenhuma razão técnica para isso.
pintainhos

Respostas:

107

Este campo é um comentário e pode ser alterado ou ignorado à vontade. É definido como user@hostpadrão por ssh-keygen.

Michael Hampton
fonte
11
Breve e direto ao ponto. Ser capaz de alterar o comentário na vontade resolveu o quebra-cabeça para mim. Eu pensei que tinha algum tipo de papel no processo de autenticação ssh.
Basil A
2
@BasilA Eu tenho algumas chaves em que a removi completamente.
Michael Hampton
3
Ao configurar o login da chave SSH para uma instância no Google Cloud Compute , o GCC usa esse campo de comentário para identificar o nome de usuário na instância à qual a chave deve ser associada.
Hby2Py
53

Isso é explicado brevemente na página de manual sshd(8)da seção sobre chaves autorizadas:

Protocolo 2 chave pública consistem em: opções , KeyType , chave codificada em base64 , comment.

No opensshcontexto de chaves autorizadas, há apenas significado de comentário. Mas existem implementações SSH que dão o significado a esta parte, como por exemplo a implementação SSH nos modems LANCOM está usando esse comentário como um nome de usuário para o qual a chave é válida.

Jakuje
fonte
6
+1 para citando o homem
mgarciaisaia
17

Como outros apontaram, é um comentário para permitir que você para identificar qual chave é qual.

Ao olhar para uma única chave, por exemplo id_rsa.pub, não faz muita diferença, mas ao olhar para uma lista potencialmente longa de chaves, como o que você tem no authorized_keysarquivo, é muito útil poder identificar facilmente qual chave é qual.

Além disso, ssh-keygeno padrão é user@hostnameque, para casos de uso típicos, é um identificador claro de qual chave é ( user@domainnão seria).

Håkan Lindqvist
fonte
5

Muito, muito simples: eu e você somos humanos usando uma máquina. Então, olhando para este exemplo, você postou:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX root@mydomain

Uma máquina pode ler isso:

ssh-rsa [piles of gobbledygook]…CA9gyE8HRhNMG6ZDwyhPBbDfX

Um humano pode ler este comentário:

root@mydomain

As pessoas tendem a esquecer que, embora as coisas podem olhar complicada em sistemas de computadores, eles poderiam realmente ser toneladas mais complicado se o código foi concebido unicamente para o consumo máquina. Quero dizer, olhe o código de malware obscurecido. Depois de decodificá-lo e formatá-lo, é legível por humanos. Mas alguém teve que se esforçar para dificultar a leitura dos humanos.

Por padrão, todos os tipos de arquivos de codificação e configuração em um sistema de computador são estruturados para consumo humano porque ... Somos humanos usando máquinas e máquinas não precisam de coisas como:

  • Comentários.
  • Indentações.
  • Variáveis ​​e funções escritas em uma linguagem legível por humanos.

Portanto, o comentário é para você, eu e mais ninguém. Provavelmente funcionaria sem um comentário. Mas que uma vez que algo não está funcionando às 3:00 da manhã e você está procurando a chave pública certa, deseja / sonha / reza para que o comentário esteja lá.

JakeGould
fonte
7
"máquinas não precisam de coisas como ... recuos" tosse Python tosse
um CVn
11
@ MichaelKjörling "... a menos que sejam feitos para se preocupar com eles." :-)
hBy2Py