Mehrere Heroku-Konten

92

Ich habe Probleme bei der Arbeit mit mehreren Heroku-Konten auf meinem Computer.

Die Sache ist, dass es vorher großartig funktioniert hat, indem man Konten mit dem Heroku-Edelstein wechselt. Aber jetzt (obwohl ich neue SSH-Schlüssel generiert habe) wird es nicht funktionieren.

Wenn ich ein mache git push heroku master, heißt es nur:

[email protected] ist nicht berechtigt, auf my_app_name zuzugreifen

Hat jemand einen Rat, wie ich das lösen könnte?

Erik
quelle
Was gibt ssh yourid @ server -v?
Adam Dymitruk
"Berechtigung verweigert (publickey)."?
Erik
Oh, eine Anmerkung ... Die E-Mail "[email protected]" ist nicht dieselbe E-Mail wie die E-Mail des Heroku-Kontos ... es scheint also eine Art Verwechslung zu geben, die das Problem verursacht.
Erik
Kopieren Sie sowohl private als auch öffentliche Schlüssel unter Ihr git / .ssh / diectory. das ist für mich in Ordnung!
Dmitri Algazin

Antworten:

162

Sie müssen sicherstellen, dass Sie den richtigen SSH-Schlüssel verwenden.

Die Möglichkeit, dies zu tun (und das Heroku-Konten-Plugin fordert Sie dazu auf), besteht darin, Ihrer SSH-Konfigurationsdatei in ~ / .ssh / config einen Abschnitt hinzuzufügen. Zum Beispiel habe ich für mein Heroku-Arbeitskonto Folgendes in meiner SSH-Konfiguration:

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

Nun, und das ist entscheidend, müssen Sie sicherstellen, dass Ihre Git-Fernbedienung für die Verwendung des gleichen Hosts eingerichtet ist . In diesem Fall ist es heroku.work . Normalerweise wäre es heroku.com, wenn Sie Heroku nur mit einem einzigen Konto verwenden würden.

Sie müssen also die Git-Fernbedienung bearbeiten (Sie können dies in der .git/configDatei Ihres Repos auf Ihrem Computer tun ). Ändern Sie die Datei so, dass sie wie folgt aussieht:

 [remote "heroku"]
   url = [email protected]:<appname>.git

Beachten Sie das Heroku. Arbeit , nicht Heroku. com und ersetzen Sie <appname> durch den Namen Ihrer App (auch bekannt als Ihr Repo-Name) auf heroku.

bantic
quelle
1
Thx, das war es, was ich brauchte, als ich meine Prod-App aus Herokus Dashboard erstellte.
Bachet
1
[email protected] ... existiert jedoch nicht als Endpunkt. Wie mache ich das zum Endpunkt, an den ich pushen soll? - Ah, du brauchst das Heroku-Accounts-Plugin.
jmstone617
1
@jmstone Die Änderungen, .ssh/configum es so zu machen, dass heroku.workzuheroku.com
bantic
Ja, es war ein weiteres Problem für mich, ich habe alles herausgefunden. Vielen Dank!
jmstone617
Ich habe diese Seite mit einem Lesezeichen versehen. Immer wenn ich Probleme mit Heroku habe, lese ich diese Antwort und erkenne, was ich tun muss.
13.
36

Ich habe dies mit dem Heroku-Accounts-Plugin gelöst

Anweisungen finden Sie hier

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

Louis Gillies
quelle
Das größte Problem bei diesem Tool ist, dass es unverschlüsselte SSH-Schlüssel generiert.
Wolfram Arnold
Erstellen Sie die Schlüssel selbst manuell und das Problem verschwindet. Dieser Stecker ist perfekt dafür!
Chris Hough
8

Sie müssen als Mitarbeiter für das Projekt akzeptiert werden, das Sie nicht besitzen.

Es funktioniert so (mit Git):

  1. Der Eigentümer des Projekts geht für das Projekt zur Heroku-Konsole
  2. Der Eigentümer fügt die E-Mail-Adresse des Mitarbeiters hinzu (die, mit der der Mitarbeiter registriert wurde).
  3. Der Mitarbeiter richtet seinen Schlüssel für die öffentliche Sicherheit in seinem Konto ein (falls noch nicht geschehen).
  4. Der Mitarbeiter fügt das andere Projekt hinzu und richtet es als weitere Fernbedienung ein

Und das sollten alle Leute sein; Sie müssen nur die andere Fernbedienung drücken, wenn Sie sie auf der anderen App bereitstellen.

Bastes
quelle
Danke dir!!! Ich habe stundenlang versucht, das herauszufinden. Sogar die verschiedenen Ansätze auf SO und anderen Websites ausprobieren. Das Hinzufügen derselben E-Mail zu beiden Projekten auf Heroku ist definitiv die einfachste Lösung.
B Seven
Ich habe ewig damit verbracht, eine Identifikationsdatei einzurichten und alle möglichen Tricks auszuführen, damit mehrere Schlüssel funktionieren, aber diese Antwort ist bei weitem der einfachste Weg, um diese Funktion zum Laufen zu bringen. Fügen Sie Ihr ursprüngliches Konto als Mitarbeiter hinzu und verwenden Sie denselben Schlüssel. Einfach.
Peter Nixey
6

Ich würde ein paar Dinge zum Plugin für Heroku-Konten hinzufügen ... In diesem Beispiel wird davon ausgegangen, dass Ihr bereits vorhandenes Heroku-Konto heroku.work ist und Sie ein neues Konto heroku.personal hinzufügen.

Außerdem wird beschrieben, wie Sie eine App von einer zur anderen verschieben, z. B. wenn Sie Ihr Maximum von 25 Apps erreicht haben und ein neues Konto erstellen und einige Ihrer Nebenprojekte und experimentellen Apps aus Ihrem Hauptkonto verschieben möchten.

  1. Sie müssen wahrscheinlich das Plugin verwenden, um sowohl Ihre alten als auch Ihre neuen Konten zu erstellen. Wenn Sie beispielsweise zu Beginn eine hatten, können Sie nicht einfach eine neue heroku.personal hinzufügen, sondern müssen heroku.work erstellen, um Ihre alte zu ersetzen
  2. Sie müssen Ihre alten Apps Ihrer heroku.work neu zuweisen
  3. wenn Sie bewegt eine App, nicht belegen die App heroku.personal (mit heroku accounts:set personal) bis nach Sie die App mit der Heroku übertragen sharingcommmand wie https://devcenter.heroku.com/articles/transferring-apps

Die Schritte, die Sie wahrscheinlich benötigen, sind:

  1. Installieren Sie das Heroku-Account-Plugin
  2. Gehen Sie zu heroku.com und erstellen Sie Ihr neues Konto (falls Sie noch kein zweites Konto haben).
  3. Führen Sie es aus heroku accounts:add work --auto, um ein neues heroku.work-Konto zu erstellen, das Ihr altes Standardkonto ersetzt (verwenden Sie also dieselben Anmeldeinformationen, die Sie die ganze Zeit verwendet haben). Sie müssen AUCH Ihren neuen Schlüssel auf heroku hochladen:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. Führen Sie aus heroku accounts:add personal --auto, um ein neues heroku.personal-Konto zu erstellen (z. B. verwenden Sie Ihre neuen Anmeldeinformationen für Ihr neues heroku-Konto). Sie müssen AUCH Ihren neuen Schlüssel auf heroku hochladen:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. Führen Sie für jede App eine CD zum Projektstamm aus und führen Sie sie aus heroku accounts:set work(alles, was Sie tun, um git für die Verwendung von heroku.work einzurichten. Dies ist (in diesem Beispiel) dasselbe Heroku-Konto, das Sie die ganze Zeit verwendet haben. Erst jetzt heißt es Heroku. Arbeit.
  6. Wenn Sie eine App von heroku.work nach heroku.personal verschieben möchten, (a) fügen Sie das neue heroku-Konto als Mitarbeiter mit heroku sharing:add <new owner email>(b) in Ihrem lokalen Verzeichnis hinzu, wechseln Sie die App mit heroku accounts:set personal(c) transfer ** zu heroku.personal ** die App vom alten Konto zum neuen Konto mit heroku sharing:transfer <new owner email>dann (d) entfernen Sie den alten E-Mail-Adress-Mitarbeiter (wenn Sie möchten) mitheroku sharing:remove <old owner email>

** Beachten Sie, dass der von mir bereitgestellte Heroku-Link besagt, dass es besondere Anforderungen gibt, um eine App mit bezahlten Ressourcen zu verschieben. Entfernen Sie im Allgemeinen die bezahlten Ressourcen, fügen Sie sie später wieder hinzu, oder lassen Sie sie vom Support durchführen.

jpw
quelle
6

Das Heroku-Plugin https://github.com/ddollar/heroku-accounts ist veraltet. Heroku unterhält jetzt eine eigene Adresse unter https://github.com/heroku/heroku-accounts . Leider scheint es nicht projektweise zu speichern, welches Konto es verwenden soll, sodass Sie es ausführen müssen

$ heroku accounts:set account_name

Jedes Mal, wenn Sie das Heroku-Befehlszeilentool verwenden möchten.

Schnelle Lösung für Benutzer mit Zugriff auf die Bash-Shell: Erstellen Sie ein lokales bin-Verzeichnis (das bereits in Rails-Anwendungen vorhanden ist) und erstellen Sie dort bin / heroku. Inhalt:

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

(Ersetzen Sie gegebenenfalls "Projektname".) Führen Sie dann aus

$ chmod + x bin / heroku

Sie können dann laufen

$ bin / heroku Run-Konsole

und es wird automatisch das richtige Heroku-Konto für Sie verwendet. Noch besser ist es, ./bin zu Ihrem Pfad hinzuzufügen, damit Sie wieder nur noch laufen können:

$ heroku run console

James Roscoe
quelle
2

Ich fing an, das Heroku-Konten-Plugin zu verwenden, erkannte dann aber, dass mein Kumpel mich einfach zu einem Mitarbeiter auf seinem Heroku-Konto machen konnte, und das war alles, was benötigt wurde.

Linojon
quelle
Stimmen Sie diesem zu, besonders wenn Sie das Passwort für beide Konten haben
portforwardpodcast
1

Damit dies sowohl mit Git als auch mit der Heroku-Konsole funktioniert, musste ich die Anweisung ssh config gemäß den Anweisungen von bantic hinzufügen, aber ich musste auch zwei Fernbedienungen für meine .git-Konfiguration erstellen:

[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
quelle
1
Und dann auf was drängen? Heroku oder Herkunft?
jmstone617
1

Das nervt mich schon eine Weile und ich habe nie eine Lösung gefunden, die mir gefallen hat. Endlich einen gefunden.

(OS X-spezifische Antwort.)

Sie können einfach neue Benutzer erstellen. Gehen Sie zu Systemeinstellungen -> Benutzer & Gruppen -> Benutzer- oder Gruppenschaltfläche hinzufügen. Sie können einige Benutzer für verschiedene Heroku-Konten erstellen. Ich habe gerade meinen Benutzer1, Benutzer2 usw. genannt.

Gehen Sie dann zu Systemeinstellungen -> Freigabe -> Remote-Anmeldung -> Zugriff zulassen für: Alle Benutzer

An diesem Punkt können Sie zu einem Terminal gehen und Folgendes tun:

$ ssh user1@localhost

Dann können Sie solche Dinge tun:

$ heroku login
$ heroku keys:add
Funroll
quelle
Dies scheint perfekt zu sein, aber ist es möglich, verschiedenen SSH-Benutzern Zugriff auf dieselben Ordner und Dateien zu gewähren?
Fellow Stranger
1

Ich habe nano .git / config verwendet und dann den Wert der URL von remote "heroku" durch heroku.com> apps> settings> Reveal config vars> Heroku Git URL ersetzt

Deepika Anand
quelle
0

Ich habe genau das gleiche Problem.

Dies ist nicht die Antwort, aber eine temporäre Lösung besteht darin, Ihre "Standard" -Heroku-E-Mail als Mitarbeiter zu der App hinzuzufügen, auf die Sie nicht zugreifen können.

kbjerring
quelle
Es tut mir leid, dass ich vergessen habe, dies weiterzuverfolgen, aber ein Neustart meines Computers hat das Problem behoben. Kann deine nicht lösen.
Erik
Ja, darüber habe ich auch irgendwo gelesen. Bei mir hat es aber nicht funktioniert.
Kbjerring
0

Ich benutze Win7

1) Erstellen Sie ein anderes Benutzerkonto in Win7 und melden Sie sich an

2) Öffne Git Bash und logge dich in dein neues Heroku-Konto ein

3) Neuen RSA-Schlüssel erstellen und hochladen (Anleitung hier: https://devcenter.heroku.com/articles/keys )

4) dann mach was immer du willst (neue App erstellen, Datei darauf schieben .....)

5) Jedes Mal, wenn Sie mit Ihrem ursprünglichen Heroku-Konto arbeiten müssen, melden Sie sich einfach bei Ihrem ursprünglichen Win-Benutzerkonto an und arbeiten Sie mit Heroku

mehdok
quelle
Ich würde dies nicht empfehlen - das Wechseln lokaler PC-Konten ist übertrieben, wenn es unten bessere Lösungen gibt.
Rafi Jacoby
Dies ist sowieso eine Option
Mehdok
0

Erstellen Sie wie folgt einen neuen öffentlichen / privaten Schlüssel für neue E-Mails

1) ssh-keygen -t rsa -C "[email protected]"

2) Geben Sie einen neuen Dateinamen an, unter dem der Schlüssel gespeichert werden soll (/home/.ssh/seckey).

3) Fügen Sie dann Ihren neuen Schlüssel zum ssh-agent hinzu: - ssh-add ~ / .ssh / seckey

4) Fügen Sie dann Ihren neuen Schlüssel zu Heroku hinzu: - Heroku-Schlüssel: Fügen Sie ~ / .ssh / seckey hinzu

5) Fügen Sie die SSH-Konfigurationsdatei als ~ / .ssh / config und den Inhalt wie folgt hinzu

Host heroku.com Hostname heroku.com Port 22 IdentitätenNur ja IdentityFile ~ / .ssh / seckey Benutzer [email protected]

Host heroku.com Hostname heroku.com Port 22 IdentitätenNur ja IdentityFile ~ / .ssh / id_rsa Benutzer [email protected]

6) Klonen Sie den Code mit einem der beiden

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

John
quelle
0

Installiere das Heroku-Accounts Plugin und konfiguriere es !!

Installation

 heroku plugins:install heroku-accounts

Verwendung

So fügen Sie Konten hinzu:

$ heroku accounts:add personal
  Enter your Heroku credentials.
  Email: [email protected]
  Password: ******

So listen Sie Konten auf:

$ heroku accounts
  * personal
    work

So wechseln Sie zu einem anderen Konto:

heroku accounts:set personal

So finden Sie ein Girokonto:

$ heroku accounts:current
  personal

So entfernen Sie ein Konto:

$ heroku accounts:remove personal
  Account removed: personal

Stellen Sie Ihr funktionierendes Heroku-Konto ein und übertragen Sie die Änderungen.

Prasanth Jaya
quelle
-1

Bearbeiten Sie Ihre Konfiguration für dieses Projekt und stellen Sie die richtige E-Mail-Adresse ein. Aus dem Stammverzeichnis dieses Repositorysgit config user.email <heroku email>

Katzenby
quelle
Scheint keine Wirkung zu haben, fürchte ich ...
Erik
Was ist, wenn Sie diesem Befehl das Flag "--global" hinzufügen? Manchmal las Heroku Gem das anstelle der Repo-E-Mail des Projekts für mich.
Danneu