Plusieurs comptes heroku


92

J'ai des problèmes lorsque je travaille avec plusieurs comptes Heroku sur mon ordinateur.

Le fait est que cela fonctionnait très bien avant en changeant de compte avec la gemme heroku. Mais maintenant (même si j'ai généré de nouvelles clés SSH) cela ne fonctionnera pas.

Quand je fais un git push heroku masterça dit juste:

my@email.com n'est pas autorisé à accéder à my_app_name

Quelqu'un a-t-il des conseils sur la façon dont je pourrais résoudre ce problème?


que donne ssh yourid @ server -v?
Adam Dymitruk

"Autorisation refusée (publickey)."?
Erik

Oh, une note… L'e-mail "my@email.com" n'est pas le même e-mail que l'e-mail du compte Heroku… il semble donc y avoir une sorte de confusion qui cause le problème.
Erik

copiez les clés privées et publiques sous votre git / .ssh / diectory. ça marche pour moi!
Dmitri Algazin

Réponses:


162

Vous devez vous assurer que vous utilisez la bonne clé ssh.

La façon de faire cela (et la façon dont le plugin de comptes heroku vous y invite) est d'ajouter une section à votre fichier de configuration ssh dans ~ / .ssh / config. Par exemple, pour mon compte heroku de travail, j'ai ceci dans ma configuration ssh:

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

Maintenant, et c'est crucial, vous devez vous assurer que votre télécommande git est configurée pour utiliser le même hôte nommé . Dans ce cas, c'est heroku.work . Normalement, ce serait heroku.com si vous utilisiez heroku avec un seul compte.

Vous devrez donc éditer la télécommande git (vous pouvez le faire dans le .git/configfichier de votre dépôt sur votre machine). Modifiez le fichier pour qu'il ressemble à:

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

Notez le heroku. travail , pas heroku. com et remplacez <appname> par le nom de votre application (c'est-à-dire le nom de votre repo) sur heroku.


1
Thx, c'était ce dont j'avais besoin lorsque j'ai créé mon application de production à partir du tableau de bord d'heroku.
Bachet

1
git@heroku.work ... n'existe pas en tant que point de terminaison, cependant. Comment en faire le point de terminaison vers lequel pousser? - Ah, vous avez besoin du plugin heroku-accounts.
jmstone617

1
@jmstone Les changements pour .ssh/configfaire en sorte que cela se heroku.workrésout àheroku.com
bantic

Oui, c'était un autre problème de mon côté, j'ai tout compris. Merci!
jmstone617

J'ai mis cette page en favori. Chaque fois que j'ai des problèmes pour pousser vers Heroku, je lis cette réponse et je réalise ce que je dois faire.
septerr


8

Vous devez être accepté en tant que collaborateur sur le projet qui ne vous appartient pas.

Cela fonctionne comme ceci (en utilisant git):

  1. Le propriétaire du projet accède à la console d'heroku pour le projet
  2. Le propriétaire ajoute l'adresse e-mail du collaborateur (celle qui a été utilisée pour enregistrer le collaborateur)
  3. Le collaborateur configure sa clé de sécurité publique dans son compte (s'il ne l'a pas déjà fait)
  4. Le collaborateur ajoute et configure l'autre projet comme une autre télécommande

Et cela devrait être tout le monde; il vous suffit d'appuyer sur l'autre télécommande lors du déploiement sur l'autre application.


Je vous remercie!!! J'ai passé des heures à essayer de comprendre cela. Même essayer toutes les différentes approches sur SO et autres sites. Ajouter le même e-mail aux deux projets sur Heroku est certainement la solution la plus simple.
B Seven

J'ai passé des années à configurer un fichier d'identification et à faire toutes sortes d'astuces pour faire fonctionner plusieurs touches, mais cette réponse est de loin le moyen le plus simple de faire fonctionner cela. Ajoutez votre compte d'origine en tant que collaborateur et utilisez la même clé. Facile.
Peter Nixey

6

J'ajouterais quelques choses concernant le plugin heroku-accounts ... cet exemple suppose que votre compte heroku préexistant sera heroku.work et que vous ajoutez un nouveau compte heroku.personal.

Il décrit également comment déplacer une application de l'une à l'autre, par exemple, si vous avez atteint votre maximum de 25 applications et que vous créez un nouveau compte et que vous souhaitez déplacer certains de vos projets secondaires et applications expérimentales hors de votre compte principal.

  1. Vous devez probablement utiliser le plugin pour créer à la fois votre ancien et votre nouveau compte, par exemple, si vous en aviez un pour commencer, vous ne pouvez pas simplement ajouter un nouveau heroku.personal, vous devez créer heroku.work pour remplacer votre ancien.
  2. Vous devrez réaffecter vos anciennes applications à votre heroku.work
  3. si vous déplacez une application, n'attribuez pas l'application à heroku.personal (using heroku accounts:set personal) avant d' avoir transféré l'application à l'aide de la commande sharingheroku comme décrit https://devcenter.heroku.com/articles/transferring-apps

Les étapes dont vous avez probablement besoin sont donc:

  1. Installez le plugin heroku-account
  2. Allez sur heroku.com et créez votre nouveau compte (si vous n'avez pas déjà un deuxième compte)
  3. exécutez heroku accounts:add work --autopour créer un nouveau compte heroku.work pour remplacer votre ancien compte par défaut (utilisez donc les mêmes informations d'identification que vous utilisez depuis le début). Vous devez ÉGALEMENT télécharger votre nouvelle clé sur heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. exécutez heroku accounts:add personal --autopour créer un nouveau compte heroku.personal (par exemple, utilisez vos nouvelles informations d'identification pour votre nouveau compte heroku). Vous devez ÉGALEMENT télécharger votre nouvelle clé sur heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. Pour chaque application, accédez à la racine du projet, puis exécutez heroku accounts:set work(tout cela configure git pour utiliser votre heroku.work, qui est (dans cet exemple) le même compte heroku que vous utilisez depuis le début, mais maintenant il s'appelle heroku. travail.
  6. Si vous souhaitez déplacer une application de heroku.work vers heroku.personal, (a) ajoutez le nouveau compte heroku en tant que collaborateur avec heroku sharing:add <new owner email>(b) dans votre répertoire local, basculez l'application vers heroku.personal en utilisant heroku accounts:set personal(c) transfer ** l'application de l'ancien compte vers le nouveau compte en utilisant heroku sharing:transfer <new owner email>puis (d) supprimez l'ancienne adresse e-mail du collaborateur (si vous le souhaitez) en utilisantheroku sharing:remove <old owner email>

** Notez que le lien heroku que j'ai fourni indique qu'il existe des exigences particulières pour déplacer une application avec des ressources payantes. En règle générale, supprimez les ressources payées, puis ajoutez-les plus tard ou demandez à l'assistance de le faire.


6

Le plugin Heroku https://github.com/ddollar/heroku-accounts est obsolète. Heroku gère désormais le sien sur https://github.com/heroku/heroku-accounts . Malheureusement, il ne semble pas stocker projet par projet quel compte il doit utiliser, vous devez donc exécuter

$ heroku accounts:set account_name

chaque fois que vous souhaitez utiliser l'outil de ligne de commande Heroku.

Solution rapide pour les personnes ayant accès au shell bash: créez un répertoire bin local (il est déjà présent dans les applications Rails) et créez-y bin / heroku. Contenu:

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

(remplacez "nom_projet" selon le cas) Puis exécutez

$ chmod + x bin / heroku

Vous pouvez alors courir

console d'exécution $ bin / heroku

et il utilisera automatiquement le bon compte Heroku pour vous. Mieux encore est d'ajouter ./bin à votre chemin pour que vous reveniez à la simple exécution:

console d'exécution $ heroku


2

J'ai commencé à utiliser le plugin heroku-accounts, mais j'ai ensuite réalisé que mon copain pouvait simplement faire de moi un collaborateur sur son compte heroku et c'était tout ce qu'il fallait.


votez pour celui-ci, surtout si vous avez le mot de passe pour les deux comptes
portforwardpodcast

1

Pour que cela fonctionne pour moi à la fois avec Git et la console Heroku, j'ai dû ajouter create the ssh config comme indiqué par bantic, mais j'ai également dû créer deux télécommandes dans ma configuration .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
Et puis pousser à quoi? heroku ou origine?
jmstone617

1

Cela me dérange depuis un certain temps et je n'ai jamais trouvé de solution qui me plaise. Enfin trouvé un.

(Réponse spécifique à OS X.)

Vous pouvez simplement créer de nouveaux utilisateurs. Allez dans Préférences Système -> Utilisateurs et groupes -> Bouton Ajouter un utilisateur ou un groupe. Vous pouvez créer quelques utilisateurs pour différents comptes heroku, je viens de nommer le mien user1, user2, etc.

Ensuite, allez dans Préférences Système -> Partage -> Connexion à distance -> Autoriser l'accès pour: Tous les utilisateurs

À ce stade, vous pouvez accéder à un terminal et effectuer les opérations suivantes:

$ ssh user1@localhost

Ensuite, vous pouvez faire des choses comme ceci:

$ heroku login
$ heroku keys:add

Cela semble parfait, mais est-il possible de donner à différents utilisateurs ssh l'accès aux mêmes dossiers et fichiers?
Fellow Stranger

1

J'ai utilisé nano .git / config puis remplacé la valeur de l'url de "heroku" distant par heroku.com> applications> paramètres> Reveal config vars> Heroku Git URL


0

J'ai exactement le même problème.

Ce n'est pas la réponse, mais une solution temporaire consiste à ajouter votre e-mail heroku "standard" en tant que collaborateur à l'application à laquelle vous ne pouvez pas accéder.


Désolé, j'ai oublié de donner suite à cela, mais le redémarrage de mon ordinateur a résolu le problème. Peut ne pas résoudre le vôtre.
Erik

Ouais, j'ai lu sur cet endroit aussi. Cela n'a pas fonctionné pour moi cependant.
kbjerring

0

J'utilise win7

1) Créez un autre compte utilisateur dans win7 et connectez-vous

2) ouvrez git bash et connectez-vous à votre nouveau compte heroku

3) créer et télécharger une nouvelle clé RSA (instructions ici: https://devcenter.heroku.com/articles/keys )

4) puis faites ce que vous voulez (créez une nouvelle application, envoyez un fichier dessus .....)

5) chaque fois que vous avez besoin de travailler avec votre compte heroku d'origine, connectez-vous simplement à votre compte utilisateur win d'origine et travaillez avec heroku


Je ne recommanderais pas cela - il est exagéré de devoir changer de compte PC local lorsqu'il existe de meilleures solutions ci-dessous.
Rafi Jacoby

c'est une option de toute façon
mehdok

0

créer une nouvelle clé publique / privée pour un nouvel e-mail comme suit

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

2) fournir un nouveau nom de fichier dans lequel enregistrer la clé (/home/.ssh/seckey)

3) Ajoutez ensuite votre nouvelle clé au ssh-agent: - ssh-add ~ / .ssh / seckey

4) Ensuite, ajoutez votre nouvelle clé à heroku: - clés heroku: ajoutez ~ / .ssh / seckey

5) ajoutez le fichier de configuration SSH en tant que ~ / .ssh / config et le contenu comme suit

Hôte heroku.com Nom d'hôte heroku.com Port 22 Identities Uniquement oui IdentityFile ~ / .ssh / seckey Utilisateur mvjohn@klairvoynat.com

Hôte heroku.com Nom d'hôte heroku.com Port 22 Identities Uniquement oui IdentityFile ~ / .ssh / id_rsa Utilisateur mvjohn@hotmail.com

6) clonez le code en utilisant soit

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


0

Installez le plugin Heroku-accounts et configurez-le !!

Installation

 heroku plugins:install heroku-accounts

Usage

Pour ajouter des comptes:

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

Pour lister les comptes:

$ heroku accounts
  * personal
    work

Pour passer à un autre compte:

heroku accounts:set personal

Pour trouver le compte courant:

$ heroku accounts:current
  personal

Pour supprimer un compte:

$ heroku accounts:remove personal
  Account removed: personal

définir sur votre compte heroku de travail et pousser les modifications.


-1

Modifiez votre configuration pour ce projet, en définissant l'adresse e-mail correcte. À partir de la racine de ce référentiel,git config user.email <heroku email>


Semble n'avoir aucun effet, j'ai peur…
Erik

Qu'en est-il lorsque vous ajoutez l'indicateur "--global" à cette commande? Parfois, Heroku gem lisait cela au lieu de l'e-mail de dépôt du projet pour moi.
danneu
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.