Tentando trabalhar nos meus repositórios reais de "trabalho" e nos repositórios pessoais no hub git, no meu computador.
A conta de trabalho foi configurada primeiro e tudo funciona na perfeição.
Minha conta pessoal, no entanto, não parece levar ao meu repo pessoal, que é configurado em uma conta / e-mail diferente.
Tentei copiar minha chave de trabalho para minha conta pessoal, mas isso gera um erro, porque é claro que uma chave pode ser anexada apenas a uma conta.
Como posso enviar / extrair para e de ambas as contas, de suas respectivas credenciais do github?
git
version-control
github
Kevin Whitaker
fonte
fonte
ssh-add ~/.ssh/id_rsa_COMPANY
<br/> para dizer ao ssh-agent para incluí-lo para uso. <hr /> Rest funciona bem para mim com o tutorial acima mencionado.Respostas:
Tudo que você precisa fazer é definir sua configuração do SSH com vários pares de chaves SSH.
É fácil seguir este link (Obrigado Eric): http://code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts--net-22574
Gerando chaves SSH (Win / msysgit) https://help.github.com/articles/generating-an-ssh-key/
Além disso, se você estiver trabalhando com vários repositórios usando diferentes personas, precisará garantir que seus repositórios individuais tenham as configurações do usuário substituídas de acordo:
Definindo nome de usuário, email e token do GitHub - Substituindo configurações de repositórios individuais https://help.github.com/articles/setting-your-commit-email-address-in-git/
Espero que isto ajude.
Nota: Alguns de vocês podem exigir que emails diferentes sejam usados para repositórios diferentes. No git 2.13, você pode definir o email em um diretório editando o arquivo de configuração global encontrado em:
~/.gitconfig
usando condicionais da seguinte forma:E então seu trabalho específico config ~ / work / .gitconfig ficaria assim:
Obrigado @alexg por me informar disso nos comentários.
fonte
Use HTTPS:
altere o URL remoto para https:
e você está pronto para ir:
Para garantir que as confirmações apareçam como executadas por USERNAME, também é possível configurar o user.name e o user.email para este projeto:
fonte
user.name
euser.email
com a--global
bandeira, faça o que ele diz acima para defini-lo localmente para esse único repo. Isso resolveu muitos problemas. Agora, para excluir o repo antigo ....Entrando em forma
Para gerenciar um repositório git em uma conta github / bitbucket / qualquer outra conta separada, basta gerar uma nova chave SSH.
Porém, antes que possamos começar a enviar / reposicionar repos com sua segunda identidade, precisamos colocar você em forma - vamos assumir que seu sistema está configurado com um par típico
id_rsa
e deid_rsa.pub
chaves. Agora, suatree ~/.ssh
aparência se parece com issoPrimeiro, nomeie esse par de chaves - adicionar um nome descritivo ajudará a lembrar qual chave é usada para qual usuário / usuário remoto
Em seguida, vamos gerar um novo par de chaves - aqui vou nomear a nova chave
github-otheruser
Agora, quando olhamos
tree ~/.ssh
, vemosEm seguida, precisamos definir um
~/.ssh/config
arquivo que definirá nossas configurações principais. Vamos criá-lo com as permissões apropriadas de leitura / gravação do proprietárioAbra isso com seu editor favorito e adicione o seguinte conteúdo
Presumivelmente, você terá alguns repositórios existentes associados à sua identidade principal do github. Por esse motivo, o github.com "padrão"
Host
está configurado para usar suamainuser
chave. Se você não deseja favorecer uma conta em detrimento de outra, mostrarei como atualizar os repositórios existentes no seu sistema para usar uma configuração ssh atualizada.Adicione sua nova chave SSH ao github
Cabeça sobre a github.com/settings/keys para adicionar o seu novo público -chave
Você pode obter o conteúdo da chave pública usando: copie / cole no github
Agora sua nova identidade de usuário está configurada. Abaixo, mostraremos como usá-la.
Como fazer coisas: clonar um repositório
Então, como isso se junta para trabalhar com o git e o github? Bem, como você não pode ter uma galinha sem ovo, veremos a clonagem de um repositório existente. Essa situação pode se aplicar a você se você tiver uma nova conta do github para o seu local de trabalho e tiver sido adicionado a um projeto da empresa.
Digamos que
github.com/someorg/somerepo
já exista e você foi adicionado a ela - a clonagem é tão fácil quantoEssa parte em negrito deve corresponder ao
Host
nome que configuramos no seu~/.ssh/config
arquivo. Que conecta corretamente o git ao correspondenteIdentityFile
e o autentica corretamente com o githubComo fazer: criando um novo repositório
Bem, como você não pode ter uma galinha sem ovo, analisaremos a publicação de um novo repositório em sua conta secundária. Essa situação se aplica aos usuários que criam novo conteúdo usando sua conta secundária do github.
Vamos supor que você já tenha trabalhado um pouco localmente e agora esteja pronto para ir ao github. Você pode acompanhar-me se quiser
Agora configure este repositório para usar sua identidade
Agora faça seu primeiro commit
Verifique o commit para ver se sua nova identidade foi usada usando o git log
Tudo bem, hora de empurrar para o github! Como o github ainda não conhece nosso novo repositório , primeiro vá para github.com/new e crie seu novo repositório - nomeie-o somerepo
Agora, para configurar seu repositório para "conversar" com o github usando a identidade / credenciais corretas, adicionamos um controle remoto. Supondo que seu nome de usuário no github para sua nova conta seja
someuser
...Essa parte em negrito é absolutamente crítica e deve corresponder à
Host
que definimos em seu~/.ssh/config
arquivoPor fim, empurre o repositório
Atualize um repositório existente para usar uma nova configuração SSH
Digamos que você já tenha alguns repositórios clonados, mas agora você deseja usar uma nova configuração SSH. No exemplo acima, mantivemos seus repositórios existentes intactos, atribuindo seu par anterior
id_rsa
/id_rsa.pub
chave aoHost github.com
seu arquivo de configuração SSH. Não há nada de errado nisso, mas agora tenho pelo menos 5 configurações do github e não gosto de pensar em uma delas como a configuração "padrão" - prefiro ser explícito sobre cada uma.Antes de termos isso
Então, agora vamos atualizar isso para isso (alterações em negrito )
Mas isso significa que agora qualquer repo existente com um
github.com
controle remoto não funcionará mais com esse arquivo de identidade. Mas não se preocupe, é uma solução simples.Para atualizar qualquer repositório existente para usar sua nova configuração SSH, basta abrir o arquivo de configuração git do repositório e atualizar o URL!
Atualize o campo de origem remota (alterações em negrito )
É isso aí. Agora você pode
push
/pull
para o conteúdo do seu coraçãoPermissões de arquivo de chave SSH
Se você estiver tendo problemas com as chaves públicas que não estão funcionando corretamente, o SSH é bastante rigoroso nas permissões de arquivo permitidas no
~/.ssh
diretório e nos arquivos de chave correspondentesComo regra geral, qualquer diretório deve ser
700
e qualquer arquivo deve600
- isso significa que eles são de leitura / gravação somente pelo proprietário - nenhum outro grupo / usuário pode lê-los / gravá-losComo gerencio minhas chaves SSH
Eu gerencio chaves SSH separadas para todos os hosts aos quais me conecto, para que, se alguma chave for comprometida, não seja necessário atualizá-las em todos os outros locais em que as usei. É como quando você recebe a notificação da Adobe de que 150 milhões das informações de seus usuários foram roubadas - agora é necessário cancelar o cartão de crédito e atualizar todos os serviços que dependem dele - que incômodo.
Aqui está a
~/.ssh
aparência do meu diretório: Eu tenho uma.pem
chave para cada usuário, em uma pasta para cada domínio ao qual me conecto. Eu uso.pem
chaves para que eu só precise de um arquivo por chave.E aqui está o meu
/.ssh/config
arquivo correspondente - obviamente o material do github é relevante para responder a essa pergunta sobre o github, mas essa resposta tem como objetivo fornecer a você o conhecimento necessário para gerenciar suas identidades ssh em qualquer número de serviços / máquinas.Obtendo sua chave pública SSH de uma chave PEM
Acima, você notou que só tenho um arquivo para cada chave. Quando preciso fornecer uma chave pública, simplesmente a gero conforme necessário.
Portanto, quando o github solicitar sua chave pública ssh, execute este comando para gerar a chave pública para stdout - copie / cole onde necessário
Observe que este também é o mesmo processo usado para adicionar minha chave a qualquer máquina remota. O
ssh-rsa AAAA...
valor é copiado para o~/.ssh/authorized_keys
arquivo do controle remotoConvertendo seus pares de chaves
id_rsa
/id_rsa.pub
no formato PEMEntão, você quer domar seus arquivos-chave e reduzir alguns problemas do sistema de arquivos? É fácil converter seu par de chaves em um único PEM
Ou, seguindo os exemplos acima, renomeamos
id_rsa -> github-mainuser
eid_rsa.pub -> github-mainuser.pub
- entãoAgora, apenas para garantir que convertemos isso corretamente, verifique se a chave pública gerada corresponde à sua chave pública antiga
Agora que você possui o seu
github-mainuser.pem
arquivo, é possível excluir com segurança os arquivosgithub-mainuser
e osgithub-mainuser.pub
arquivos antigos - apenas o arquivo PEM é necessário; basta gerar a chave pública sempre que precisar ^ _ ^Criando chaves PEM do zero
Você não precisa criar o par de chaves públicas / privadas e depois converter em uma única chave PEM. Você pode criar a chave PEM diretamente.
Vamos criar um
newuser.pem
Obter a chave pública SSH é o mesmo
fonte
git clone github.com-otheruser:someorg/somerepo.git
precisa sergit clone [email protected]:someorg/somerepo.git
(adicionando ogit@
). Pelo menos, era disso que eu precisava.Host github.com
(nova linha)User git
(nova linha)IdentityFile ...
Criando aliases de host diferentes para o github.com em seu ~ / .ssh / config e fornecendo a cada alias de host sua própria chave ssh, você pode facilmente usar várias contas do github sem confusão. Isso ocorre porque o github.com distingue não o usuário, que é sempre apenas o git, mas a tecla ssh que você usou para se conectar. Basta configurar suas origens remotas usando seus próprios aliases de host. ”
O resumo acima é cortesia dos comentários na postagem do blog abaixo.
Eu achei essa explicação a mais clara. E funciona para mim, pelo menos a partir de abril de 2012.
http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/
fonte
$ ssh-add ~/.ssh/id_rsa_COMPANY
- consulte Erro: permissão negada (chave pública) - Documentação do usuárioOs detalhes em http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/ vinculados por mishaba funcionam muito bem para mim.
A partir dessa página:
Em seguida, edite esse arquivo para algo assim (uma entrada por conta):
fonte
git clone git@github-COMPANY/repo/name.git
para obter a chave ssh correta.git clone https://github-COMPANY/GitUserName/projectname.git
parece não funcionar. A chave padrão usando github.com funciona bem.ssh: connect to host github.com port 22: Bad file number fatal: The remote end hung up unexpectedly
. https foi o único caminho até agora.$ git clone https://github-USER/UserName/test_project_user.git Cloning into test_project_user... error: Couldn't resolve host 'github-USER' while accessing https://github-USER/N UserName/test_project_user.git/info/refs fatal: HTTP request failed
Não tenho certeza se ele pode estar relacionado ao arquivo de configuração ou à maneira como estou tentando emular sua chamada git com https.Abra o arquivo de configuração e adicione os códigos abaixo. (mude de acordo com sua conta)
Conta 1
Conta 2
Conta 3
Adicione um URL remoto da seguinte maneira
Conta 1
Conta 2
Conta 3
fonte
PreferredAuthentications publickey
?Eu uso scripts de shell para mudar para qualquer conta que eu queira estar "ativa". Basicamente, você começa de novo, obtém uma conta configurada corretamente e funciona e depois move esses arquivos para um nome com o prefixo apropriado. A partir de então, você pode usar o comando "github" ou "gitxyz" para alternar:
Eu tive muita sorte com isso. Também criei um script de execução no Xcode (para você, usuários de Mac), para que ele não construísse meu projeto, a menos que eu tivesse a configuração adequada (desde que esteja usando o git):
Execute o script colocado após as dependências (usando / bin / ksh como shell):
EDIT: adicionamos testes para a existência de novos arquivos e copiamos arquivos antigos para / tmp para endereçar o comentário de @naomik abaixo.
fonte
id_rsa
eid_rsa.pub
seriam excluídas, elas poderiam ser bloqueadas do controle remoto.Esta resposta é para iniciantes (gurus sem git) . Recentemente, tive esse problema e talvez seja apenas eu, mas a maioria das respostas parecia exigir uma compreensão bastante avançada do git. Após ler várias respostas de estouro de pilha, incluindo este thread, eis as etapas que eu precisava seguir para alternar facilmente entre contas do GitHub (por exemplo, assuma duas contas do GitHub, github.com/personal e gitHub.com/work ):
ls -al ~/.ssh
arquivos dechaves ssh existentescom extensão
.pub
e suas chaves ssh, portanto, você deve ter dois para ascontaspersonal
ework
. Se houver apenas um ou nenhum, é hora de gerar outro modo inteligente, pule isso.- Gerando chave ssh : faça login no github (pessoal ou profissional), navegue até Configurações e copie o email associado.
agora volte ao Terminal e execute
ssh-keygen -t rsa -C "the copied email"
, você verá:Gerando par de chaves rsa pública / privada.
Digite o arquivo no qual salvar a chave (/.../.ssh/id_rsa):
id_rsa é o nome padrão da chave ssh a ser gerada em breve, portanto copie o caminho e renomeie o padrão, por exemplo
/.../.ssh/id_rsa_work
se estiver gerando para uma conta de trabalho. forneça uma senha ou apenas entre para ignorar e, você lerá algo como a imagem randomart da chave é: e a imagem. feito.Repita esta etapa mais uma vez para sua segunda conta do github. Certifique-se de usar o endereço de e-mail correto e um nome de chave ssh diferente (por exemplo, id_rsa_personal) para evitar a substituição.
Nesse estágio, você verá duas teclas ssh ao executar
ls -al ~/.ssh
novamente.pbcopy < ~/.ssh/id_rsa_work.pub
substituaid_rsa_work.pub
pelo que você chamou de seu.Agora que a nossa chave ssh é copiado para área de transferência, voltar a conta github [Certifique-se de que você está logado na conta de trabalho, se a chave ssh você copiou é
id_rsa_work
] e navegue atéConfigurações - SSH e Chaves GPG e clique em chave New SSH botão (não Nova chave GPG entre: D)
dê um título para essa chave, cole a chave e clique em Adicionar chave SSH. Agora você adicionou com sucesso a chave ssh ou notou que ela estava lá o tempo todo, o que é bom (ou você recebeu um erro porque selecionou Nova chave GPG em vez deNova chave SSH : D).
Edite a configuração global do git: A última etapa é garantir que o arquivo de configuração global esteja ciente de todas as contas do github (por assim dizer).
Execute
git config --global --edit
para editar este arquivo global, se isso abrir o vim e você não souber como usá-lo, pressionei
para entrar no modo Inserir, edite o arquivo como abaixo e pressione esc seguido por:wq
para sair do modo de inserção:[inside this square brackets give a name to the followed acc.] name = github_username email = github_emailaddress [any other name] name = github_username email = github_email [credential] helper = osxkeychain useHttpPath = true
Concluído !, agora, ao tentar empurrar ou extrair de um repositório, você será perguntado sobre qual conta do GitHub deve ser vinculada a esse repositório e será solicitada apenas uma vez. A configuração local lembrará esse link e não a configuração global para que você possa trabalhar. em repositórios diferentes vinculados a contas diferentes sem precisar editar a configuração global a cada vez.
fonte
Correção mais simples e fácil para evitar confusões.
Para usuários do Windows usarem várias ou diferentes contas git para diferentes projetos.
Etapas a seguir: Vá no Painel de controle e procure pelo Credential Manager. Em seguida, vá para Credential Manager -> Credenciais do Windows
Agora remova o nó git: https // github.com em Cabeçalho de credenciais genéricas
Isso removerá as credenciais atuais. Agora você pode adicionar qualquer projeto através do git pull, ele pedirá nome de usuário e senha.
Quando você enfrentar algum problema com outra conta, faça o mesmo processo.
obrigado
consulte a imagem
fonte
acabei de descobrir isso no Windows, usando credenciais para cada repositório:
O formato da credencial. https://github.com . informa ao auxiliar de credencial o URL da credencial. O 'useHttpPath' informa ao gerenciador de credenciais para usar o caminho para a credencial. Se useHttpPath for omitido, o gerenciador de credenciais armazenará uma credencial para https://github.com . Se estiver incluído, o gerente de credenciais armazenará várias credenciais, o que eu realmente queria.
fonte
Achei esta gema muito útil: sshwitch
https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch
Ajuda a trocar as chaves ssh. Lembre-se de fazer backup de tudo primeiro!
Também para garantir que as confirmações tenham o endereço de email correto associado, verifiquei se o arquivo ~ / .gitconfig tinha o endereço de email correto.
fonte
Além de criar várias chaves SSH para várias contas, você também pode adicionar colaboradores em cada projeto usando os mesmos e-mails da conta e armazenar a senha permanentemente.
Configurei várias contas com emails diferentes e depois coloquei o mesmo usuário e email em cada conta como um dos colaboradores. Dessa maneira, eu posso acessar todas as contas sem adicionar a chave SSH ou alternar para outro nome de usuário e enviar e-mail para autenticação.
fonte
A abordagem mais fácil e direta (IMHO) - sem arquivos de configuração, sem muito trabalho
Basta criar outra chave ssh.
Digamos que você tenha uma nova conta de trabalho do GitHub, basta criar uma nova chave para ela:
Agora você deve ter o antigo e o novo, para vê-los, execute:
Você precisa executar o procedimento acima apenas uma vez.
A partir de agora, toda vez que você quiser alternar entre os dois, basta executar:
Para mudar para o antigo, execute novamente:
fonte
Outra maneira mais fácil é usar vários aplicativos de desktop, como o que estou fazendo, usar a conta A no desktop do Github, enquanto usar a conta B no Github Kraken
fonte
O IntelliJ Idea oferece suporte interno para https://www.jetbrains.com/help/idea/github.html#da8d32ae
fonte
Caso você não queira mexer no
~/.ssh/config
arquivo mencionado aqui, executegit config core.sshCommand "ssh -i ~/.ssh/custom_id_rsa"
o repositório em que deseja confirmar a partir de uma conta diferente.O restante da instalação é o mesmo:
Crie uma nova chave SSH para a segunda conta com
ssh-keygen -t rsa -f ~/.ssh -f ~/.ssh/custom_id_rsa
Faça login no github com sua outra conta, acesse https://github.com/settings/keys e cole o conteúdo de
~/.ssh/custom_id_rsa.pub
Verifique se você está usando SSH em vez de HTTPS como URL remoto:
git remote set-url origin [email protected]:upstream_project_teamname/upstream_project.git
fonte
Você não precisa manter duas contas diferentes para uso pessoal e profissional. De fato, o Github recomenda que você mantenha uma única conta e ajude a mesclar as duas.
Siga o link abaixo para mesclar se você decidir que não há necessidade de manter várias contas.
https://help.github.com/articles/merging-multiple-user-accounts/
fonte
Diferente de outras respostas, onde você precisa seguir algumas etapas para usar duas contas diferentes do github da mesma máquina, para mim funcionou em duas etapas .
Você só precisa:
1) gere um par de chaves pública e privada SSH para cada uma de sua conta em
~/.ssh
local com nomes diferentes e2) adicione as chaves públicas geradas à respectiva conta em
Settings
>>SSH and GPG keys
>>New SSH Key
.Para gerar os pares de chaves pública e privada SSH, use o seguinte comando:
Como resultado de comandos acima,
id_rsa_WORK
eid_rsa_WORK.pub
arquivos serão criados para o seu trabalho conta (ex - git.work.com) eid_rsa_PERSONAL
eid_rsa_PERSONAL.pub
será criado para o seu pessoal conta (ex - github.com).Depois de criado, copie o conteúdo de cada
*.pub
arquivo public ( ) e execute a Etapa 2 para cada conta.PS : não é necessário fazer uma entrada de host para cada conta git
~/.ssh/config
arquivada, como mencionado em outras respostas, se o nome do host de suas duas contas for diferente.fonte
Se você tiver o WSL instalado, poderá ter duas contas git separadas - uma no WSL e outra no Windows.
fonte
Você deve e não deve enviar para o projeto com algumas credenciais comuns. Depois de iniciar uma nova máquina, siga as etapas abaixo para configurar e usar corretamente suas credenciais do gitlab:
Tudo isso da seguinte maneira:
fonte
Crie uma nova chave SSH no seu terminal / linha de comando.
ssh-keygen -t rsa -C "seu-endereço-de-email"
O seguinte será mostrado:
Gerando par de chaves rsa público / privado. Digite o arquivo no qual salvar a chave (/home/your_username/.ssh/id_rsa):
Copie e cole o caminho seguido por um nome identificável para o arquivo:
4) Em seguida, solicitará o seguinte:
5) Agora você pode digitar o seguinte comando para ver todas as chaves SSH que você possui na sua máquina local:
Você poderá ver seu novo arquivo de chave SSH. Como você pode ver no meu, eu tenho id_rsa_test e id_rsa_personal.pub.
6) Em seguida, você precisa copiar a chave SSH que está armazenada no arquivo id_rsa_personal.pub. Você pode abrir isso no editor de texto de sua escolha. Atualmente, estou usando o atom, então abri o arquivo usando o seguinte comando:
Você obterá algo semelhante a este:
ssh-rsa AAB3HKJLKC1yc2EAAAADAQABAAABAQCgU5 + ELtwsKkmcoeF3hNd7d6CjW + dWut83R / Dc01E / YzLc5ZFri18doOwuQoeTPpmIRVDGuQQsWsh5D5W
7) Copie isso e navegue para sua conta do GitHub → Configurações → Chaves SSH e GPG 8) Clique na nova chave SSH. Copie a chave, dê um título e adicione-o. 9) Adicionar chave do terminal
10) Configure usuário e senha.
11) Estamos prontos para confirmar e avançar agora.
fonte
Se você criou ou clonou outro repositório e não conseguiu extrair
origin
ouupstream
adicionar a chave ssh nesse diretório usando o seguinte comando funcionou.Este é o erro que eu estava recebendo aqui:
Eu usei o seguinte comando, isso funciona:
ssh-add ~/.ssh/id_rsa_YOUR_COMPANY_NAME
fonte