A maneira correta de acessar um repositório gerenciado pelo gitlab é adicionar uma chave pública.
Primeiro, você precisa criar um par de chaves: (estes são os comandos para uma máquina Linux, e eu acredito que eles também funcionam no Windows se você tiver o git for windows instalado, que instala um ambiente cygwin)
cd ~/.ssh #create this dir if it's absent
ssh-keygen -t rsa -b 2048 #i like 2048 bit rsa keys, but you could use -b 1024 instead
quando solicitado, dê um nome ao arquivo de chaves, digamos que você o chamou de "minha_chave" ele pedirá uma frase-senha. Se você digitar um, a chave privada (veja abaixo) será criptografada com essa frase secreta, então você terá que ter o arquivo-chave instalado corretamente e digitar a frase secreta para executar uma operação git. Você também pode deixar em branco, o que é menos seguro, mas mais conveniente.
Isso gera ~/.ssh/my_key
e ~/.ssh/my_key.pub
. O arquivo .pub é a chave pública, o outro é a chave privada. Agora você precisa fazer duas coisas:
- Forneça a chave pública ao servidor
- Configure seu cliente ssh para conhecer e usar a chave privada
para fazer 1., abra my_key.pub em um editor e copie o conteúdo para a área de transferência. Em seguida, faça login no gitlab por meio da interface da web. No canto superior direito, você encontrará uma imagem gerada aleatoriamente, a qual, se você passar o mouse, fornecerá duas opções: "Meu perfil" e "Logout". Clique no primeiro. À direita da página resultante, você verá um botão "adicionar chave pública". Clique nele e você será presenteado com uma página onde você pode colar a chave pública que você copiou. Dê um nome, clique em salvar e pronto.
para fazer 2. (novamente, no linux) abra (crie, se necessário) o arquivo ~/.ssh/config
, e adicione a seguinte linha:
IdentityFile ~/.ssh/my_key
Isso diz ao ssh para tentar usar a chave privada ao efetuar login em qualquer site que tente usar a autenticação de chave.
Fundo das teclas (caso você não saiba): as chaves usadas pelo ssh são chamadas de chaves assimétricas. Existe uma "chave pública" e uma "chave privada", e elas são geradas como um par (elas são matematicamente relacionadas). Qualquer coisa criptografada usando a chave pública só pode ser descriptografada usando a chave privada e vice-versa. ssh usa estes para autenticação: você dá a um servidor uma chave pública e seu cliente a chave privada que corresponde. Quando você tenta efetuar login, o servidor basicamente recebe alguns dados aleatórios, criptografa-os com a chave pública e os envia ao cliente. O cliente descriptografa usando a chave privada e envia os dados aleatórios originais de volta ao servidor. O servidor, em seguida, sabe que você é a pessoa que você diz que é (porque seu cliente foi capaz de descriptografar com sucesso.