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:

[email protected] não autorizado a acessar my_app_name

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

Erik
fonte
o que ssh yourid @ server -v oferece?
Adam Dymitruk de
"Permissão negada (chave pública)."?
Erik
Ah, uma observação ... O e-mail "[email protected]" 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 = [email protected]:<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.

bantic
fonte
1
Thx, era disso que eu precisava quando criei meu aplicativo prod no painel do heroku.
Bachet de
1
[email protected] ... 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
36

Resolvi isso usando o plugin heroku-accounts

veja aqui as instruções

http://martyhaught.com/articles/2010/12/14/managing-multiple-heroku-accounts/

Louis Gillies
fonte
O maior problema com essa ferramenta é que ela gera chaves SSH não criptografadas.
Wolfram Arnold
crie as chaves manualmente e esse problema desaparecerá. este plug é perfeito para isso!
Chris Hough
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.

Bastes
fonte
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.

jpw
fonte
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

James Roscoe
fonte
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.

linojon
fonte
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 = [email protected]:pacific-rock-4904.git
  fetch = +refs/heads/*:refs/remotes/heroku/*
[remote "heroku"]
  url = [email protected]:pacific-rock-4904.git
    fetch = +refs/heads/*:refs/remotes/heroku/*
Jamespaden
fonte
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
funroll
fonte
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

Deepika Anand
fonte
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.

kbjerring
fonte
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

mehdok
fonte
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 "[email protected]"

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 [email protected]

Host heroku.com Nome do host heroku.com Porta 22 IdentitiesSomente sim IdentityFile ~ / .ssh / id_rsa Usuário [email protected]

6) clonar o código usando

a) git clone [email protected]: your-application.git b) heroku git: clone -a your-application

John
fonte
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: [email protected]
  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.

Prasanth Jaya
fonte
-1

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

catsby
fonte
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