Várias contas heroku


92

Estou tendo problemas ao trabalhar com várias contas Heroku no meu computador.

O fato é que funcionou muito bem antes, trocando de conta com a gema heroku. Mas agora (embora eu tenha gerado novas chaves SSH) não funcionará.

Quando eu faço um, git push heroku masterele apenas diz:

my@email.com não autorizado a acessar my_app_name

Alguém tem algum conselho sobre como eu poderia resolver isso?


o que ssh yourid @ server -v oferece?
Adam Dymitruk de

"Permissão negada (chave pública)."?
Erik

Ah, uma observação ... O e-mail "meu@email.com" não é o mesmo e-mail da conta do Heroku ... então parece haver algum tipo de confusão que está causando o problema.
Erik

copie as chaves privadas e públicas em seu git / .ssh / diectory. isso funciona para mim!
Dmitri Algazin de

Respostas:


162

Você precisa se certificar de que está usando a chave ssh correta.

A maneira de fazer isso (e a maneira como o plug-in de contas do heroku solicita a você) é adicionar uma seção ao seu arquivo de configuração ssh em ~ / .ssh / config. Por exemplo, para minha conta de trabalho heroku, tenho isso em minha configuração de ssh:

Host heroku.work
  HostName heroku.com
  IdentityFile ~/.ssh/id_heroku_work_rsa
  IdentitiesOnly yes

Agora, e isso é crucial, você precisa se certificar de que seu git remoto está configurado para usar o mesmo host nomeado . Neste caso, é heroku.work . Normalmente seria o heroku.com se você estivesse usando o heroku com apenas uma conta.

Portanto, você precisará editar o git remote (você pode fazer isso no .git/configarquivo de seu repo em sua máquina). Altere o arquivo para se parecer com:

 [remote "heroku"]
   url = git@heroku.work:<appname>.git

Observe o heroku. trabalho , não heroku. com e substitua <appname> pelo nome do seu aplicativo (também conhecido como nome do repo) no heroku.


1
Thx, era disso que eu precisava quando criei meu aplicativo prod no painel do heroku.
Bachet de

1
git@heroku.work ... não existe como um endpoint, no entanto. Como faço disso o ponto de extremidade para o qual enviar? - Ah, você precisa do plugin heroku-accounts.
jmstone617

1
@jmstone As mudanças para .ssh/configtorná-lo que heroku.workresolve paraheroku.com
bantic

Sim, foi outro problema do meu lado, resolvi tudo. Obrigado!
jmstone617

Eu marquei esta página. Sempre que tenho problemas para empurrar para o Heroku, leio esta resposta e percebo o que preciso fazer.
septerr


8

Você tem que ser aceito como um colaborador no projeto que você não possui.

Funciona assim (usando git):

  1. O dono do projeto vai ao console do heroku para o projeto
  2. O proprietário adiciona o endereço de e-mail do colaborador (aquele que foi usado para cadastrar o colaborador)
  3. O colaborador configura sua chave de segurança pública em sua conta (se ainda não o fez)
  4. O colaborador adiciona e configura o outro projeto como outro controle remoto

E isso deve ser tudo pessoal; você só precisa empurrar o outro controle remoto ao implantar no outro aplicativo.


Obrigado!!! Passei horas tentando descobrir isso. Mesmo tentando todas as diferentes abordagens no SO e em outros sites. Adicionar o mesmo e-mail aos dois projetos no Heroku é definitivamente a solução mais fácil.
B Sete de

Passei muito tempo configurando um arquivo de identificação e fazendo todos os tipos de truques para fazer com que várias chaves funcionassem, mas esta resposta é de longe a maneira mais fácil de fazer isso funcionar. Adicione sua conta original como colaborador e use a mesma chave. Fácil.
Peter Nixey

6

Eu adicionaria algumas coisas sobre o plugin heroku-accounts ... este exemplo assume que sua conta heroku pré-existente será heroku.work e você está adicionando uma nova conta heroku.personal.

Ele também descreve como mover um aplicativo de um para o outro, por exemplo, se você atingiu seu máximo de 25 aplicativos e está criando uma nova conta e deseja mover alguns de seus projetos paralelos e aplicativos experimentais de sua conta principal.

  1. Você provavelmente precisará usar o plug-in para criar AMBAS as suas contas antigas e novas, por exemplo, se você tinha uma para começar, não pode simplesmente adicionar um novo heroku.personal, você precisa criar heroku.work para substituir o antigo
  2. Você precisará reatribuir seus aplicativos antigos ao seu heroku.work
  3. se você estiver movendo um aplicativo, não atribua o aplicativo para heroku.personal (usando heroku accounts:set personal) até depois de transferir o aplicativo usando o comando sharingheroku conforme descrito https://devcenter.heroku.com/articles/transferring-apps

Portanto, as etapas de que você provavelmente precisa são:

  1. Instale o plugin heroku-account
  2. Acesse heroku.com e crie sua nova conta (se ainda não tiver uma segunda conta)
  3. execute heroku accounts:add work --autopara criar uma nova conta heroku.work para substituir sua conta padrão antiga (então use as mesmas credenciais que você usou o tempo todo). Você TAMBÉM precisa fazer o upload de sua nova chave para o heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. execute heroku accounts:add personal --autopara criar uma nova conta heroku.personal (por exemplo, use suas novas credenciais para sua nova conta heroku). Você TAMBÉM precisa fazer o upload de sua nova chave para o heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. Para cada aplicativo, faça cd para a raiz do projeto e execute heroku accounts:set work(tudo o que faz é configurar git para usar seu heroku.work, que é (não neste exemplo) a mesma conta heroku que você está usando o tempo todo, só que agora é chamada de heroku. trabalhos.
  6. Se você deseja mover um aplicativo de heroku.work para heroku.personal, (a) adicione a nova conta heroku como um colaborador com heroku sharing:add <new owner email>(b) em seu diretório local, mude o aplicativo para heroku.personal usando heroku accounts:set personal(c) transferência ** o aplicativo da conta antiga para a nova conta usando heroku sharing:transfer <new owner email>e (d) remover o colaborador de endereço de e-mail antigo (se desejar) usandoheroku sharing:remove <old owner email>

** Observe que o link heroku que forneci informa que existem requisitos especiais para mover um aplicativo com quaisquer recursos pagos. Geralmente, remova os recursos pagos e, em seguida, adicione-os novamente mais tarde ou peça ajuda para fazer isso.


6

O plug-in Heroku https://github.com/ddollar/heroku-accounts foi descontinuado. Heroku agora mantém o seu próprio em https://github.com/heroku/heroku-accounts . Infelizmente, não parece armazenar projeto por projeto qual conta ele deve estar usando, então você precisa executar

$ heroku accounts:set account_name

cada vez que você quiser usar a ferramenta de linha de comando Heroku.

Solução rápida para pessoas com acesso ao shell bash: crie um diretório bin local (já está lá nos aplicativos Rails) e crie bin / heroku lá. Conteúdo:

#!/bin/bash
/usr/bin/heroku accounts:set account_name
/usr/bin/heroku $*

(substitua "project_name" conforme apropriado) Em seguida, execute

$ chmod + x bin / heroku

Você pode então correr

console de execução $ bin / heroku

e usará automaticamente a conta Heroku certa para você. Melhor ainda é adicionar ./bin ao seu caminho para que você volte a apenas executar:

$ heroku run console


2

Comecei a usar o plugin heroku-accounts, mas então percebi que meu amigo poderia simplesmente me tornar um colaborador em sua conta heroku e isso era tudo o que era necessário.


voto positivo neste aqui, especialmente se você tiver a senha de ambas as contas
portforwardpodcast

1

Para fazer isso funcionar para mim com o console Git e Heroku, eu tive que adicionar create the ssh config conforme instruído por bantic, mas também tive que criar dois remotos para minha configuração .git:

[remote "origin"]
  url = git@heroku.work:pacific-rock-4904.git
  fetch = +refs/heads/*:refs/remotes/heroku/*
[remote "heroku"]
  url = git@heroku.com:pacific-rock-4904.git
    fetch = +refs/heads/*:refs/remotes/heroku/*

1
E então empurre para quê? heroku ou origem?
jmstone617 de

1

Isso tem me incomodado há algum tempo e nunca encontrei uma solução que gostasse. Finalmente encontrei um.

(Resposta específica do OS X.)

Você pode apenas criar novos usuários. Vá para Preferências do Sistema -> Usuários e Grupos -> Adicionar usuário ou botão de grupo. Você pode criar alguns usuários para contas diferentes do heroku, acabei de nomear meu usuário1, usuário2, etc.

Em seguida, vá para Preferências do sistema -> Compartilhamento -> Login remoto -> Permitir acesso para: Todos os usuários

Neste ponto, você pode ir a um terminal e fazer o seguinte:

$ ssh user1@localhost

Então você pode fazer coisas assim:

$ heroku login
$ heroku keys:add

Isso parece perfeito, mas é possível dar a diferentes usuários ssh acesso às mesmas pastas e arquivos?
Companheiro Estranho de

1

Usei nano .git / config e substituí o valor do url do "heroku" remoto por heroku.com> apps> configurações> Reveal config vars> Heroku Git URL


0

Eu tenho exatamente o mesmo problema.

Esta não é a resposta, mas uma solução temporária é adicionar seu e-mail heroku "padrão" como um colaborador para o aplicativo que você não pode acessar.


Desculpe, esqueci de acompanhar isso, mas reiniciar meu computador resolveu o problema. Pode não resolver o seu.
Erik

Sim, eu li sobre isso em algum lugar também. Não funcionou para mim, no entanto.
kbjerring

0

eu estou usando win7

1) crie outra conta de usuário no win7 e faça login nela

2) abra o git bash e faça login em sua nova conta do heroku

3) criar e fazer upload de uma nova chave RSA (instruções aqui: https://devcenter.heroku.com/articles/keys )

4) depois, faça o que quiser (crie um novo aplicativo, envie o arquivo para ele .....)

5) toda vez que você precisar trabalhar com sua conta original do heroku, apenas entre em sua conta de usuário win original e trabalhe com o heroku


Eu não recomendaria isso - ter que mudar de conta de PC local é um exagero quando existem soluções melhores abaixo.
Rafi Jacoby

esta é uma opção de qualquer maneira
mehdok

0

crie uma nova chave pública / privada para o novo e-mail como segue

1) ssh-keygen -t rsa -C "mvjohn@klairvoynat.com"

2) forneça um novo nome de arquivo no qual salvar a chave (/home/.ssh/seckey)

3) Em seguida, adicione sua nova chave ao ssh-agent: - ssh-add ~ / .ssh / seckey

4) Em seguida, adicione sua nova chave ao heroku: - chaves heroku: adicione ~ / .ssh / seckey

5) adicione o arquivo de configuração SSH como ~ / .ssh / config e o conteúdo como segue

Host heroku.com Hostname heroku.com Porta 22 IdentitiesSomente sim IdentityFile ~ / .ssh / seckey Usuário mvjohn@klairvoynat.com

Host heroku.com Nome do host heroku.com Porta 22 IdentitiesSomente sim IdentityFile ~ / .ssh / id_rsa Usuário mvjohn@hotmail.com

6) clonar o código usando

a) git clone git@heroku.com: your-application.git b) heroku git: clone -a your-application


0

Instale o plugin Heroku-accounts e configure-o !!

Instalação

 heroku plugins:install heroku-accounts

Uso

Para adicionar contas:

$ heroku accounts:add personal
  Enter your Heroku credentials.
  Email: david@heroku.com
  Password: ******

Para listar contas:

$ heroku accounts
  * personal
    work

Para mudar para uma conta diferente:

heroku accounts:set personal

Para encontrar a conta corrente:

$ heroku accounts:current
  personal

Para remover uma conta:

$ heroku accounts:remove personal
  Account removed: personal

definido para sua conta de trabalho heroku e enviar as alterações.


-1

Edite sua configuração para esse projeto, definindo o e-mail correto. Da raiz desse repositório,git config user.email <heroku email>


Parece não ter efeito, receio ...
Erik

E quando você adiciona o sinalizador "--global" a esse comando? Às vezes, o Heroku gem lia isso em vez do e-mail do repo do projeto para mim.
danneu
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.