Meu problema é que não consigo enviar ou buscar no GitLab. No entanto, eu posso clonar (via HTTP ou SSH). Eu recebo esse erro quando tento enviar:
Permissão negada (chave pública) fatal: Não foi possível ler no repositório remoto
De todos os tópicos que eu procurei, aqui está o que eu fiz:
- Configure uma chave SSH no meu computador e adicione a chave pública ao GitLab
- Feito o config --global para nome de usuário e email
- Clonado via SSH e HTTP para verificar se isso resolveria o problema
- Concluído o comando ssh -T [email protected]
Se você tiver alguma idéia de como resolver meu problema, isso será muito apreciado.
ssh -vvvv [email protected]
para ver se ele pega a chave SSHsudo git clone [email protected]:project/somethiing.git
, caso contrário ssh vai olhar em/root/.ssh
vez da chave que você enviou~/.ssh/id_rsa
Respostas:
Eu encontrei isso depois de pesquisar muito. Vai funcionar perfeitamente bem para mim.
ssh-keygen
.ssh
pasta.id_rsa.pub
. Abra-o no bloco de notas. Copie todo o texto dele.Agora tente e funcionará com certeza.
fonte
type %userprofile%\.ssh\id_rsa.pub | clip
ssh-add filename
(com caminho-se não no dir RSA) depois de seguir os passos acimaEtapa 1: adicionado um arquivo de configuração no
~/.ssh/config
arquivo que se parece comEtapa 2: basta clonar o repositório git SEM sudo.
Documentação: https://gitlab.com/help/ssh/README#working-with-non-default-ssh-key-pair-paths
fonte
id_rsa_gitlab
no exemplo de Fedo, precisará fornecer um arquivo de configuração. Bom artigo do Gitlab sobre o assunto: gitlab.com/help/ssh/…Hostname
paraHost
fazer este trabalhoEu acho que a solução simples é adicionar uma chave privada ao agente de autenticação (se sua chave não estiver
~/.ssh/id_rsa
),Você basicamente deixa
ssh-agent
cuidar disso.Além disso, você pode adicioná-lo permanentemente .
fonte
.pub
extensão.No meu caso, não funcionou no WSL (Windows Subsystem for Linux).
Quando inicio a WSL, devo
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsa
Agora a conexão funciona.
Podemos testar isso com
ssh -T [email protected]
notas:
fonte
verifique se você não está executando
sudo git clone [email protected]:project/somethiing.git
, caso contrário, o ssh procurará/root/.ssh
a chave que você enviou~/.ssh/id_rsa
fonte
Existe uma solução muito simples para isso: em vez de trabalhar com ssh - vá para https. para fazer isso: na pasta do projeto, você tem uma pasta .git - você tem um arquivo de configuração - abra-o em um editor de texto e altere a linha
para
fonte
se você estiver no Linux ou macox, tente isso no terminal:
se não retornar nada, tente o seguinte:
ele deve criar identidade em ~ / .ssh / id_rsa
após nova tentativa:
ele deve retornar sua identidade; portanto, depois de tentar clonar novamente, ele deve funcionar
NB: não se esqueça de adicionar sua chave ssh no seu perfil gitlab
obrigado
fonte
No meu caso, não foi um problema do gitlab, mas de configuração do sshd. O servidor ssh não permitiu conexão, exceto por uma lista de usuários. O usuário git, aquele conectado remotamente ao gitlab, não estava nessa lista. Portanto, verifique isso antes de mais nada.
Você pode verificar a configuração do seu servidor ssh
/etc/ssh/sshd_config
. Se você tem uma linha com a opçãoAllowUsers
, adicione git a ela:fonte
Eu tenho o gitlab executando com o docker, foi o que fiz para corrigir o meu problema.
Constatou que dentro do docker / var / log / gitlab / sshd / current havia várias ocorrências de uma mensagem:
Depois disso, mudei a propriedade desse arquivo de 99: users para git: users with:
fonte
Passos a serem feitos, tenho o mesmo erro, mas eu o corrigi. O Gitlab quer o ssh-rsa, então abaixo está o código para executar o ssh para o rsa
ssh-keygen -o -t rsa -b 4096 -C "[email protected]"
[email protected] é o e-mail da sua conta do gitlab
Ele solicitará que você insira; basta pressionar Enter após o código abaixo ser solicitado,
Digite o arquivo no qual salvar a chave (/home/yourDesktopName/.ssh/id_rsa):
Ele solicitará novamente que você insira; basta pressionar Enter após o código abaixo ser solicitado,
Digite a senha (vazia para nenhuma senha):
Ele solicitará novamente o último que você digitar. Basta pressionar Enter depois que o código abaixo for solicitado,
Digite a mesma senha novamente:
Você mostrará seu ssh-rsa generate.
Entre na sua conta Gitlab e vá para a barra de navegação direita, você terá a configuração e, na barra lateral esquerda, a tecla ssh. Entre nele.
Olhe acima do prompt pedindo para você entrar, você obterá o caminho do ssh-rsa.
Vá para sua pasta SSH e obtenha o id_rsa.pub
Abra-o e obtenha a chave e Copie e cole no Gitlab e você está quase pronto.
Conferido por:
ssh -T [email protected]
Você vai ter:
Welcome to GitLab, @joy4!
Feito.
fonte
No começo, era muito difícil para mim, mas quando tentei, ficou muito fácil adicionar a chave ssh no Mac e Linux. Existem algumas etapas e comandos para fazer isso da seguinte maneira:
Execute o comando
ssh-keygen
nesse terminal e insira-o até que a imagem randomart da chave apareça lá.Em seguida, insira mais um comando nesse terminal:
Isso irá gerar sua chave ssh. A chave começará com
ssh-rsa
e terminará com.local
.ssh key
seção e cole-a lá. Clique noAdd
botão que irá funcionar.fonte
Eu tive o mesmo problema, resolvi adicionando uma nova chave ssh:
ssh-keygen -t ed25519 -C "[email protected]"
xclip -sel clip < ~/.ssh/id_ed25519.pub
no meu caso no Linux)settings=>ssh
chaves e passe a nova chavefonte
Digite o caminho que você deseja salvar (por exemplo: my-pc / Desktop / .ssh / ed25519)
Adicione a chave pública ao seu gitlab ( Como adicionar a chave ssh ao gitlab )
fonte
Duas coisas principalmente
Você deve ter as chaves id_rsa.pub e id_rsa (privada) na sua pasta .ssh (que deve estar na sua pasta pessoal. Crie-a, se não houver, coloque suas chaves). Não funcionaria se você nomeasse seus arquivos-chave de maneira diferente
Altere a permissão do id_rsa como chmod 400 ~ / .ssh / id_rsa
fonte
Outro problema que pode causar esse comportamento é quando você tem uma instalação com 2 possíveis locais% HOME%.
Estou usando um PC em que alguns dos meus documentos estão armazenados localmente e alguns em uma unidade de rede. Alguns aplicativos pensam que
C:\Users\<MyUserName>\
é meu%home%
, outros acham queU:\
é o lar.Acontece que
ssh-keygen
colocar minha chave privada embaixoC:\users\<MyUserName>\
, e issossh -T
essh -v
também olhar lá.Então, tudo parece funcionar bem, exceto isso
git clone
,git push
e outros procuram uma chaveU:\
. Como falha, recebo o erro mencionado acima.Levei uma hora para descobrir, mas no final a solução era simples: eu copiei tudo, desde
C:\Users\<MyUserName>\.ssh
aU:\.ssh
fonte
Eu resolvi assim ..
Gerou uma chave para o Windows usando este comando:
mas o problema era que, depois de executar este comando, ele apareceu uma linha: "Digite o arquivo no qual salvar a chave (/c/Users/xxx/.ssh/id_rsa):" Aqui, eu estava fornecendo apenas o nome do arquivo por causa do qual minha chave estava sendo salva no meu PC e não no local especificado. Quando eu fiz o "git clone", ele estava assumindo que a chave estava no local "/c/Users/xxx/.ssh/id_rsa", mas não foi encontrada, portanto estava gerando erro.
No momento da geração da chave, 2 arquivos foram gerados, digamos "file1" e "file1.pub". Renomeei esses dois arquivos como
e
e colocou ambos no local
"/c/Users/xxx/.ssh/"
fonte
Vá para o terminal e gere novamente a tecla ssh. Digite
ssh-keygen
. Ele perguntará onde você deseja salvá-lo, digite o caminho.Em seguida, copie a chave pública para a plataforma gitlabs. Geralmente começa com ssh-rsa.
fonte
O problema para mim era que eu mudei
UsePAM
parayes
parano
no arquivo de configuração SSH em/etc/ssh/sshd_config
. ComUsePAM yes
tudo funciona perfeitamente.fonte
Encontrei a solução na ajuda do gitlab .
Espero que possa ajudar alguns de vocês!
fonte
Como adicionar a chave SSH à conta do gitlab no ubuntu?
A chave SSH aparecerá. Copie aqueles e
Acesse sua conta do gitlab.
SSH-Key será adicionado!
(NB, se você tiver a chave SSH de Gerar visualizações e a permissão Obtenção negada (chave pública). Você exclui a chave ssh de visualizações e gera uma nova e adiciona git user.name e email no seu terminal)
fonte
Resolvi o
[email protected]: Permission denied (publickey)
problema usando as seguintes instruçõescat ~/.ssh/id_rsa.pub
id_rsa.pub
(chave pública) para o seu getlab `Setting -> SSH Keyscat ~/.ssh/id_rsa
id_rsa
(chave privada) para `Code_repo-> git_auth-> id_rsaNOTA: Cuide do usuário da máquina se você estiver usando o
root
usuário no DockerFile ou em qualquer outro lugar,sudo su
antes de executar os comandos acima para obter chaves públicas e privadas do usuário root.fonte
No nosso caso, não foi um problema no lado do usuário / cliente, mas no lado do servidor Gitlab.
Estamos executando uma instância local do Gitlab CE 12.9 no CentOS 7.1.
Descobrimos que no servidor, o arquivo .ssh / allowed_keys não estava sendo atualizado corretamente. Os usuários criam suas chaves SSH (seguindo o guia gitlab) e adicioná-lo ao servidor gitlab, mas o servidor não atualiza os authorized_keys , por isso vai sempre resultar em erros de permissão negada.
Uma solução alternativa foi reconstruir o arquivo allowed_keys executando:
Isso funcionaria para qualquer pessoa que adicionasse suas chaves antes de executar a tarefa rake. Para os próximos usuários que adicionariam suas chaves, alguém precisará executar manualmente as tarefas de rake novamente.
Uma solução mais permanente foi o de não usar o authorized_keys arquivo e usar em vez de uma pesquisa indexada na base de dados gitlab :
Por padrão (bem como o padrão em nossa instalação), o arquivo Write to allowed_keys foi verificado nas configurações Admin Area> Performance Optimization . Então, desmarcamos isso e usamos o banco de dados Gitlab.
Depois de configurar a pesquisa indexada e desmarcar o arquivo Write to allowed_keys , o acesso SSH ficou OK.
fonte
Para quem usa o Windows 10 e nada mais funciona para ele / ela:
No meu caso, tive que clonar o repositório com https em vez de ssh e uma janela apareceu solicitando minhas credenciais. Depois disso, tudo funciona bem.
fonte
Eu sei, estou respondendo isso muito tarde e até o StackOverflow confirmou se realmente quero responder. Estou respondendo porque ninguém descreveu o problema real e queria compartilhar o mesmo.
O básico
Primeiro, entenda o que é o controle remoto aqui. Remoto é o GitLab e seu sistema é o local; portanto, quando falamos sobre o remoto
origin
, qualquer URL definida nagit remote -v
saída é sua URL remota.Os Protocolos
Basicamente, o Git clone / push / pull funciona em dois protocolos diferentes majoritariamente (também existem outros) -
Quando você clona um repositório (ou altera a URL remota) e usa a URL HTTPs como https://gitlab.com/wizpanda/backend-app.git , usa o primeiro protocolo, ou seja, o protocolo HTTP.
Embora se você clonar o repositório (ou alterar o URL remoto) e usar o URL como
[email protected]:wizpanda/backend-app.git
ele, ele usará o protocolo SSH.Protocolo HTTP
Neste protocolo, todas as operações remotas, como clonagem, push & pull, usam a autenticação simples, como nome de usuário e senha do seu controle remoto (neste caso, GitLab), o que significa que, para cada operação, você deve digitar seu nome de usuário e senha, o que pode ser complicado. .
Então, quando você pressiona / puxa / clona, o GitLab / GitHub o autentica com seu nome de usuário e senha e permite que você faça a operação.
Se você quiser tentar fazer isso, você pode alternar para HTTP URL, executando o comando
git remote set-url origin <http-git-url>
.Para evitar esse caso, você pode usar o protocolo SSH.
Protocolo SSH
Uma conexão SSH simples funciona em pares de chaves público-privadas. Portanto, no seu caso, o GitLab não pode autenticá-lo porque você está usando o URL SSH para se comunicar. Agora, o GitLab deve conhecê-lo de alguma forma. Para isso, você deve criar um par de chaves público-privado e fornecer a chave pública ao GitLab.
Agora, quando você pressiona / puxa / clona com o GitLab, o GIT (SSH internamente), por padrão, oferece sua chave privada ao GitLab e confirma sua identidade, e o GitLab permite que você execute a operação.
Portanto, não repetirei os passos que já foram dados por Muhammad, repetirei-os teoricamente.
~/.ssh
nomeadoid_rsa.pub
(chave pública) eid_rsa
(chave privada).Dicas
Você sempre deve criar uma chave rsa forte com pelo menos 2048 bytes. Então o comando pode ser
ssh-keygen -t rsa -b 2048
.https://gitlab.com/help/ssh/README#generating-a-new-ssh-key-pair
Pensamento geral
Tanto a abordagem tem seus prós e contras. Depois de digitar o texto acima, fui pesquisar mais sobre isso, porque nunca li algo sobre isso.
Encontrei este documento oficial https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols que diz mais sobre isso. Meu argumento aqui é que, lendo o erro e refletindo sobre o erro, você pode fazer sua própria teoria ou entendimento e, em seguida, combinar com alguns resultados do Google para corrigir o problema :)
fonte
Adicionei meu
~/.ssh/id_rsa.pub
à lista de chaves SSH conhecidas nas configurações do GitLab https://gitlab.com/profile/keys . Isso resolveu o problema para mim. :-)fonte
Eu uso o ubuntu 18.04, e foi realmente um problema de permissão na minha máquina local. O problema desapareceu quando defini a permissão de leitura / gravação na minha pasta .git.
fonte
Bem, eu tive esse mesmo problema e depois de tentar a resposta que @Khan propôs. No entanto, eu só consegui fazê-lo funcionar apenas alterando a URL de origem no arquivo .git / config para o endereço https: https://gitlab.com/mygitlabusername/mygitproject.git
Como o acesso via ssh é negado, eu descobri que usar https não deveria ser um problema. No entanto, solicitará seu nome de usuário e senha para cada envio ao repositório at
fonte
Por favor, use
git config credential.helper store
se o seu site estiver usando TLS / SSL. Espero que isso funcionefonte
Parece haver diferenças entre as duas maneiras de acessar um repositório git, ou seja, usando SSH ou HTTPS. Para mim, encontrei o erro porque estava tentando enviar por push meu repositório local usando SSH.
O problema pode ser resolvido simplesmente clicando no botão clone na página de destino do seu projeto e copiando o link HTTPS e substituindo-o pelo link SSH que aparece com o formato "git @ gitlab ...".
fonte
Alterar permissão :: chmod 400 ~ / .ssh / id_rsa Isso ajudou para mim.
fonte