O que é uma chave SSH?

4

Eu me inscrevi no github e observei a opção de chave ssh que parecia interessante. Eu originalmente esperava algo como uma chave ssl (nome, nome do usuário, etc). Depois de passar por isso eu percebo que eu só coloco uma senha e é sempre myuser @ comp-name (isto é windows). Por quê? Eu pensei que era um user / pass id e eu posso criar chaves separadas para fins separados por motivos de privacidade.

Agora vejo que sou obrigado a usar um para criar um repositório. Também vejo algo sobre um 'arquivo de chave privada' ao olhar para as opções. O que exatamente é uma chave SSH e como posso criar um usuário separado sem criar um login separado nas janelas.

    
por quack quixote 17.05.2010 / 07:58

2 respostas

1

Para adicionar à excelente resposta de David:

Para criar uma chave SSH (ou mais precisamente: um par de chaves pública / privada) no Windows, você pode usar o PuttyGen (gratuito). É um addon para o popular cliente PuTTY SSH.

Instruções, por exemplo aqui: link

É claro que você também pode criar a chave usando as ferramentas OpenSSH; estes são menos comuns no Windows.

    
por 17.05.2010 / 09:05
9

Você já ouviu falar da criptografia assimétrica (também chamada de criptografia de chave pública)? Essa é a tecnologia na qual as chaves SSH são baseadas.

O conceito básico de criptografia assimétrica é que você tem duas chaves de criptografia, que são tipicamente números muito grandes (ou equivalentemente, longas cadeias de dados binários). Qualquer mensagem criptografada com uma delas pode ser decriptografada somente com a outra - nem mesmo com a própria chave de criptografia original! Isso é útil porque você pode manter uma das chaves, a chave privada , e publicar a outra, a chave pública , em algum lugar on-line ou onde quiser. As pessoas podem criptografar mensagens usando a chave pública e ter certeza de que somente você, o detentor da chave privada correspondente, pode descriptografá-las e ler seus conteúdos. (É assim que os programas GPG e PGP e similares funcionam, se você já ouviu falar deles)

Acontece que o processo também funciona ao contrário, com as teclas trocadas. Se você criptografar algo usando sua chave privada, ela só poderá ser descriptografada usando a chave pública correspondente. Isso pode parecer inútil porque qualquer pessoa no mundo pode obter sua chave pública e descriptografar a mensagem, mas ela tem um efeito colateral muito útil: confirma que a mensagem veio de você . Como ninguém mais no mundo tem sua chave privada, ninguém mais poderia ter feito uma mensagem que possa ser descriptografada com sua chave pública.

Se você pensar sobre isso, poder verificar se uma mensagem veio de você e não de algum impostor é exatamente o que é a autenticação. Toda vez que você entrar em um site usando um nome de usuário e senha, você está fornecendo algumas informações secretas que supostamente só você sabe, a fim de provar que a solicitação de login está vindo de você. Bem, você pode fazer a mesma coisa com sua chave privada: criptografar sua solicitação de login para provar que ela vem de você. E é assim que funciona a autenticação de pares de chaves SSH. Em vez de você fornecer um nome de usuário e senha, o servidor SSH envia ao seu cliente SSH uma mensagem para ser criptografada com sua chave privada. O cliente criptografa, envia de volta a mensagem criptografada e o servidor a descriptografa usando sua chave pública para verificá-la. Se passar no cheque, parabéns, você está logado!

Eu mesmo não me inscrevi no GitHub (ainda), portanto não estou familiarizado com o procedimento exato, mas suspeito que, quando eles pedem um username@host , é apenas um comentário para identificar a chave em particular. Se você logar no GitHub de diferentes computadores, você terá uma chave privada SSH diferente para cada um desses computadores, e o GitHub precisa manter o controle de todas as chaves públicas correspondentes. O username@host é uma maneira bastante padrão de rotular chaves públicas SSH provenientes de pessoas diferentes e / ou hosts diferentes.

A propósito, vale mencionar que a autenticação de par de chaves SSH é geralmente considerada mais segura do que a autenticação de nome de usuário / senha. A razão é que, quando você usa um nome de usuário e senha para entrar em um site, você tem que compartilhar essas informações com pelo menos um outro computador: o servidor web que executa o site. Na maioria das vezes, tudo bem, mas é sempre possível que quem estiver no comando do site, ou mesmo apenas alguém que tenha acesso ao servidor, possa estar gravando o seu senha e usá-lo nas suas costas para se passar por você. Usar um par de chaves privada / pública elimina essa possibilidade, porque você nunca compartilha a chave privada com qualquer pessoa , nem mesmo o servidor em que você está se conectando. Portanto, embora o servidor (por exemplo, o GitHub) seja perfeitamente capaz de verificar se realmente você está efetuando login, ele ainda não possui informações suficientes para fingir que você faz login como você.

Quanto à forma como você cria um par de chaves SSH: Sou usuário de Linux, por isso não sei como isso seria feito com o software que você está usando no Windows. Seja qual for o programa cliente SSH que você usa (PuTTY?), Você deve ter uma maneira de criar um par de chaves.

    
por 17.05.2010 / 08:18