Несколько учетных записей heroku


92

У меня проблемы при работе с несколькими учетными записями Heroku на моем компьютере.

Дело в том, что раньше он отлично работал, переключая учетные записи с помощью гема героку. Но теперь (хотя я создал новые ключи SSH) это не сработает.

Когда я делаю это, git push heroku masterон просто говорит:

my@email.com не авторизован для доступа к my_app_name

Есть ли у кого-нибудь совет, как я могу это решить?


что дает ssh yourid @ server -v?
Адам Димитрук

«В разрешении отказано (публичный ключ).»?
Эрик

О, одно примечание… Электронная почта «my@email.com» - это не то же самое, что и электронная почта учетной записи Heroku… так что, похоже, возникла какая-то путаница, которая вызывает проблему.
Эрик

скопируйте как закрытый, так и открытый ключи в свой git / .ssh / diectory. это подходит для меня!
Дмитрий Алгазин

Ответы:


162

Вам необходимо убедиться, что вы используете правильный ключ ssh.

Чтобы сделать это (и как подсказывает вам плагин учетных записей heroku), нужно добавить раздел в файл конфигурации ssh в ~ / .ssh / config. Например, для моей рабочей учетной записи heroku в моей конфигурации ssh есть следующее:

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

Теперь, и это очень важно, вам нужно убедиться, что ваш git remote настроен на использование того же именованного хоста . В данном случае это героку.работа . Обычно это heroku.com, если вы используете heroku только с одной учетной записью.

Поэтому вам нужно отредактировать git remote (вы можете сделать это в .git/configфайле репозитория на вашем компьютере). Измените файл, чтобы он выглядел так:

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

Обратите внимание на героку. работа , а не героку. com и замените <appname> названием вашего приложения (также известным как ваше имя репо) на heroku.


1
Спасибо, это было то, что мне было нужно, когда я создавал свое prod-приложение с панели управления heroku.
Bachet

1
git@heroku.work ... однако не существует как конечная точка. Как мне сделать эту конечную точку для отправки? - А, вам нужен плагин heroku-accounts.
jmstone617

1
@jmstone Изменения, чтобы .ssh/configсделать это так, heroku.workчтобы heroku.com
разрешить

Да, это была другая проблема с моей стороны, я все понял. Благодарность!
jmstone617

Я добавил эту страницу в закладки. Каждый раз, когда у меня возникают проблемы с переходом на Heroku, я читаю этот ответ и понимаю, что мне нужно сделать.
septerr

36

Я решил это с помощью плагина heroku-accounts

см. здесь инструкции

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


Самая большая проблема с этим инструментом заключается в том, что он генерирует незашифрованные ключи SSH.
Вольфрам Арнольд

создайте ключи вручную, и эта проблема исчезнет. эта вилка идеально подходит для этого!
Chris Hough

8

Вы должны быть приняты в качестве соавтора проекта, которым вы не владеете.

Это работает так (с использованием git):

  1. Владелец проекта переходит на консоль heroku за проектом
  2. Владелец добавляет адрес электронной почты соавтора (тот, который использовался для регистрации соавтора)
  3. Соавтор устанавливает свой открытый ключ безопасности в своей учетной записи (если он еще не сделал этого)
  4. Соавтор добавляет и настраивает другой проект как еще один удаленный

И это должно быть все, ребята; вам просто нужно нажать на другой пульт при развертывании в другом приложении.


Спасибо!!! Я часами пытался понять это. Даже пробуя разные подходы на SO и других сайтах. Добавление одного и того же адреса электронной почты к обоим проектам на Heroku, безусловно, является самым простым решением.
B Seven

Я потратил целую вечность на создание файла идентификации и выполнение всевозможных трюков, чтобы заставить работать несколько ключей, но этот ответ, безусловно, самый простой способ заставить эту работу. Добавьте исходную учетную запись в качестве соавтора и используйте тот же ключ. Легко.
Питер Никси

6

Я бы добавил пару вещей по поводу плагина heroku-accounts ... в этом примере предполагается, что ваша уже существующая учетная запись heroku будет heroku.work, и вы добавляете новую учетную запись heroku.personal.

В нем также описывается, как переместить приложение из одного в другое, например, если вы достигли максимума в 25 приложений и создаете новую учетную запись и хотите переместить некоторые из ваших побочных проектов и экспериментальных приложений из основной учетной записи.

  1. Вероятно, вам нужно использовать плагин для создания ОБЕИХ старых и новых учетных записей, например, если у вас была одна для начала, вы не можете просто добавить новую heroku.personal, вам нужно создать heroku.work, чтобы заменить свою старую.
  2. Вам нужно будет переназначить свои старые приложения для своего heroku.work
  3. если вы перемещение приложения, не назначайте приложение heroku.personal (используя heroku accounts:set personal) до тех пор , после того, как вы не переведете приложение с использованием Heroku sharingввода команды , как описано https://devcenter.heroku.com/articles/transferring-apps

Итак, шаги, которые вам, вероятно, понадобятся:

  1. Установите плагин heroku-account
  2. Перейдите на heroku.com и создайте новую учетную запись (если у вас еще нет второй учетной записи)
  3. запустите, heroku accounts:add work --autoчтобы создать новую учетную запись heroku.work, чтобы заменить старую учетную запись по умолчанию (поэтому используйте те же учетные данные, которые вы использовали все время). Вам ТАКЖЕ необходимо загрузить новый ключ в heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. запустите, heroku accounts:add personal --autoчтобы создать новую учетную запись heroku.personal (например, используйте свои новые учетные данные для своей новой учетной записи heroku). Вам ТАКЖЕ необходимо загрузить новый ключ в heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. Для каждого приложения перейдите в корень проекта, затем запустите heroku accounts:set work(все, что делает это, настраивает git для использования вашего heroku.work, который (в данном примере) является той же учетной записью heroku, которую вы использовали все время, только теперь она называется heroku. Работа.
  6. Если вы хотите переместить приложение с heroku.work на heroku.personal, (a) добавьте новую учетную запись heroku в качестве соавтора с heroku sharing:add <new owner email>(b) в свой локальный каталог, переключите приложение на heroku.personal с помощью heroku accounts:set personal(c) передачи ** приложение из старой учетной записи в новую учетную запись, используя heroku sharing:transfer <new owner email>затем (d) удалите старый адрес электронной почты соавтора (если хотите), используяheroku sharing:remove <old owner email>

** Обратите внимание, что в предоставленной мной ссылке heroku говорится, что существуют особые требования для перемещения приложения с любыми платными ресурсами. Как правило, удалите платные ресурсы, а затем добавьте их позже или обратитесь в службу поддержки.


6

Плагин Heroku https://github.com/ddollar/heroku-accounts устарел. Heroku теперь поддерживает свою собственную по адресу https://github.com/heroku/heroku-accounts . К сожалению, похоже, что он не сохраняет для каждого проекта, какую учетную запись он должен использовать, поэтому вам нужно запустить

$ heroku accounts:set account_name

каждый раз, когда вы хотите использовать инструмент командной строки Heroku.

Быстрое решение для людей, имеющих доступ к оболочке bash: создайте локальный каталог bin (он уже есть в приложениях Rails) и создайте там bin / heroku. Содержание:

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

(замените «project_name» соответствующим образом) Затем запустите

$ chmod + x bin / heroku

Затем вы можете запустить

$ bin / heroku запустить консоль

и он автоматически будет использовать для вас правильную учетную запись Heroku. Еще лучше добавить ./bin в свой путь, чтобы вы снова просто работали:

$ heroku запустить консоль


2

Я начал использовать плагин heroku-accounts, но потом понял, что мой приятель может просто сделать меня соавтором своей учетной записи heroku, и это все, что мне нужно.


проголосуйте за это, особенно если у вас есть пароль для обеих учетных записей
portforwardpodcast

2

Установите плагин Heroku-accounts и настройте его !!

Установка

 heroku plugins:install heroku-accounts

Применение

Чтобы добавить учетные записи:

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

Чтобы просмотреть учетные записи:

$ heroku accounts
  * personal
    work

Чтобы переключиться на другую учетную запись:

heroku accounts:set personal

Чтобы найти текущий счет:

$ heroku accounts:current
  personal

Чтобы удалить учетную запись:

$ heroku accounts:remove personal
  Account removed: personal

установите свою рабочую учетную запись heroku и нажмите изменения.


1

Чтобы это работало для меня как с Git, так и с консолью Heroku, мне пришлось добавить создание конфигурации ssh в соответствии с инструкциями bantic, но мне также пришлось создать два пульта дистанционного управления в моей конфигурации .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
А потом к чему? героку или происхождение?
jmstone617

1

Некоторое время это меня беспокоит, и я так и не нашел решения, которое мне нравилось. Наконец нашел.

(Ответ для OS X.)

Вы можете просто создавать новых пользователей. Перейдите в Системные настройки -> Пользователи и группы -> Добавить пользователя или кнопку группы. Вы можете создать несколько пользователей для разных учетных записей heroku, я просто назвал свои user1, user2 и т. Д.

Затем перейдите в Системные настройки -> Общий доступ -> Удаленный вход -> Разрешить доступ для: всех пользователей

На этом этапе вы можете перейти к терминалу и сделать следующее:

$ ssh user1@localhost

Тогда вы можете делать такие вещи:

$ heroku login
$ heroku keys:add

Это кажется идеальным, но можно ли предоставить разным пользователям ssh доступ к одним и тем же папкам и файлам?
Fellow Stranger

1

Я использовал nano .git / config, затем заменил значение url-адреса удаленного "heroku" на heroku.com> apps> settings> Reveal config vars> Heroku Git URL


0

У меня точно такая же проблема.

Это не ответ, но временное решение - добавить ваш «стандартный» адрес электронной почты heroku в качестве соавтора в приложение, к которому вы не можете получить доступ.


Извините, я забыл ответить на этот вопрос, но перезагрузка компьютера решила проблему. Может не решить вашу.
Эрик

Да, я тоже читал об этом месте. Но у меня это не сработало.
kbjerring

0

я использую win7

1) создайте еще одну учетную запись пользователя в win7 и войдите в нее

2) откройте git bash и войдите в свою новую учетную запись heroku

3) создайте и загрузите новый ключ RSA (инструкция здесь: https://devcenter.heroku.com/articles/keys )

4) затем делайте то, что хотите (создайте новое приложение, вставьте в него файл ...)

5) каждый раз, когда вам нужно работать с исходной учетной записью heroku, просто войдите в свою исходную учетную запись пользователя win и работайте с heroku


Я бы не рекомендовал это - необходимость переключать локальные учетные записи ПК является излишним, если ниже есть лучшие решения.
Rafi Jacoby

в любом случае это вариант
мехдок

0

создайте новый открытый / закрытый ключ для нового электронного письма следующим образом

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

2) укажите новое имя файла для сохранения ключа (/home/.ssh/seckey)

3) Затем добавьте свой новый ключ в ssh-agent: - ssh-add ~ / .ssh / seckey

4) Затем добавьте свой новый ключ в heroku: - heroku keys: add ~ / .ssh / seckey

5) добавьте файл конфигурации SSH как ~ / .ssh / config и содержимое следующим образом

Хост heroku.com Имя хоста heroku.com Порт 22 IdentityOnly yes IdentityFile ~ / .ssh / seckey Пользователь mvjohn@klairvoynat.com

Хост heroku.com Имя хоста heroku.com Порт 22 IdentityOnly yes IdentityFile ~ / .ssh / id_rsa Пользователь mvjohn@hotmail.com

6) клонируйте код, используя либо

a) git clone git@heroku.com: your-application.git b) heroku git: clone -a ваше-приложение


-1

Отредактируйте конфигурацию для этого проекта, указав правильный адрес электронной почты. Из корня этого репозиторияgit config user.email <heroku email>


Боюсь, что это не действует…
Эрик

Как насчет того, чтобы добавить к этой команде флаг "--global"? Иногда гем Heroku читал это вместо электронного письма с репозиторием проекта.
danneu
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.