Varias cuentas de heroku


92

Tengo problemas al trabajar con varias cuentas de Heroku en mi computadora.

La cuestión es que ha funcionado muy bien antes al cambiar de cuenta con la gema heroku. Pero ahora (aunque he generado nuevas claves SSH) no funcionará.

Cuando hago un git push heroku mastersolo dice:

my@email.com no tiene autorización para acceder a my_app_name

¿Alguien tiene algún consejo sobre cómo podría resolver esto?


¿Qué da ssh yourid @ server -v?
Adam Dymitruk

"Permiso denegado (clave pública)".
Erik

Oh, una nota ... El correo electrónico "my@email.com" no es el mismo correo electrónico que el correo electrónico de la cuenta de Heroku ... así que parece haber algún tipo de confusión que está causando el problema.
Erik

copie las claves públicas y privadas en su git / .ssh / diectory. ¡funciona para mi!
Dmitri Algazin

Respuestas:


162

Debe asegurarse de que está utilizando la clave ssh correcta.

La forma de hacer esto (y la forma en que el complemento de cuentas de heroku le solicita) es agregar una sección a su archivo de configuración ssh en ~ / .ssh / config. Por ejemplo, para mi cuenta de heroku de trabajo tengo esto en mi configuración ssh:

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

Ahora, y esto es crucial, debes asegurarte de que tu control remoto git esté configurado para usar ese mismo host con nombre . En este caso es heroku.work . Normalmente sería heroku.com si estuvieras usando heroku con una sola cuenta.

Por lo tanto, deberá editar el control remoto de git (puede hacerlo en el .git/configarchivo de su repositorio en su máquina). Cambie el archivo para que se vea así:

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

Tenga en cuenta el heroku. trabajo , no heroku. com y reemplace <appname> con el nombre de su aplicación (también conocido como el nombre de su repositorio) en heroku.


1
Gracias, eso era lo que necesitaba cuando creé mi aplicación prod desde el tablero de heroku.
Bachet

1
git@heroku.work ... sin embargo, no existe como un punto final. ¿Cómo hago para que ese sea el punto final al que empujar? - Ah, necesitas el complemento heroku-accounts.
jmstone617

1
@jmstone Los cambios para .ssh/confighacerlo así se heroku.workresuelveheroku.com
bantic

Sí, fue otro problema de mi parte, lo tengo todo resuelto. ¡Gracias!
jmstone617

He marcado esta página. Cada vez que tengo problemas para presionar a Heroku, leo esta respuesta y me doy cuenta de lo que tengo que hacer.
septiembre


8

Tienes que ser aceptado como colaborador en el proyecto que no te pertenece.

Funciona así (usando git):

  1. El propietario del proyecto va a la consola de heroku para el proyecto.
  2. El propietario agrega la dirección de correo electrónico del colaborador (la que se utilizó para registrar la del colaborador)
  3. El colaborador configura su clave de seguridad pública en su cuenta (si aún no lo hizo)
  4. El colaborador agrega y configura el otro proyecto como otro remoto

Y eso debería ser toda la gente; solo tiene que presionar el otro control remoto al implementar en la otra aplicación.


¡¡¡Gracias!!! Pasé horas tratando de resolver esto. Incluso probando todos los enfoques diferentes en SO y otros sitios. Agregar el mismo correo electrónico a ambos proyectos en Heroku es definitivamente la solución más fácil.
B Seven

Pasé años configurando un archivo de identificación y haciendo todo tipo de trucos para que varias teclas funcionen, pero esta respuesta es, con mucho, la forma más fácil de hacer que esto funcione. Agrega tu cuenta original como colaborador y usa la misma clave. Fácil.
Peter Nixey

6

Agregaría un par de cosas sobre el complemento heroku-accounts ... este ejemplo asume que su cuenta heroku preexistente será heroku.work y está agregando una nueva cuenta heroku.personal.

También describe cómo mover una aplicación de una a otra, por ejemplo, si ha alcanzado su máximo de 25 aplicaciones y está creando una nueva cuenta y desea mover algunos de sus proyectos paralelos y aplicaciones experimentales fuera de su cuenta principal.

  1. Probablemente necesite usar el complemento para crear AMBAS sus cuentas antiguas y nuevas, por ejemplo, si tenía una para comenzar, no puede simplemente agregar un nuevo heroku.personal, debe crear heroku.work para reemplazar el anterior.
  2. Deberá reasignar sus aplicaciones antiguas a su heroku.work
  3. si está moviendo una aplicación, no asigne la aplicación a heroku.personal (usando heroku accounts:set personal) hasta después de transferir la aplicación usando el comando sharingheroku como se describe https://devcenter.heroku.com/articles/transferring-apps

Entonces, los pasos que probablemente necesite son:

  1. Instale el complemento de cuenta heroku
  2. Vaya a heroku.com y cree su nueva cuenta (si aún no tiene una segunda cuenta)
  3. ejecute heroku accounts:add work --autopara crear una nueva cuenta heroku.work para reemplazar su antigua cuenta predeterminada (así que use las mismas credenciales que ha estado usando todo el tiempo). TAMBIÉN necesitas subir tu nueva clave a heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. ejecute heroku accounts:add personal --autopara crear una nueva cuenta heroku.personal (por ejemplo, use sus nuevas credenciales para su nueva cuenta heroku). TAMBIÉN necesitas subir tu nueva clave a heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. Para cada aplicación, vaya a la raíz del proyecto y luego ejecute heroku accounts:set work(todo lo que hace es configurar git para usar su heroku.work, que es (en este ejemplo) la misma cuenta de heroku que ha estado usando todo el tiempo, solo que ahora se llama heroku. trabajo.
  6. Si desea mover una aplicación de heroku.work a heroku.personal, (a) agregue la nueva cuenta de heroku como colaborador con heroku sharing:add <new owner email>(b) en su directorio local, cambie la aplicación a heroku.personal usando heroku accounts:set personal(c) transfer ** la aplicación de la cuenta anterior a la cuenta nueva usando y heroku sharing:transfer <new owner email>luego (d) elimine la dirección de correo electrónico anterior del colaborador (si lo desea) usandoheroku sharing:remove <old owner email>

** Tenga en cuenta que el enlace de heroku que proporcioné dice que hay requisitos especiales para mover una aplicación con cualquier recurso pagado. Por lo general, elimine los recursos pagados, luego agréguelos más tarde o pídale al soporte que lo haga.


6

El complemento de Heroku https://github.com/ddollar/heroku-accounts ha quedado obsoleto. Heroku ahora mantiene el suyo en https://github.com/heroku/heroku-accounts . Desafortunadamente, no parece almacenar proyecto por proyecto qué cuenta debería usar, por lo que debe ejecutar

$ heroku accounts:set account_name

cada vez que desee utilizar la herramienta de línea de comandos de Heroku.

Solución rápida para personas con acceso al shell bash: cree un directorio bin local (ya está allí en las aplicaciones Rails) y cree bin / heroku allí. Contenido:

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

(reemplace "project_name" según corresponda) Luego ejecute

$ chmod + x bin / heroku

Entonces puedes correr

$ bin / heroku ejecutar la consola

y utilizará automáticamente la cuenta de Heroku adecuada para usted. Mejor aún es agregar ./bin a su ruta para que vuelva a ejecutar:

$ heroku ejecutar consola


2

Comencé a usar el complemento heroku-accounts, pero luego me di cuenta de que mi amigo podía convertirme en colaborador de su cuenta heroku y eso era todo lo que necesitaba.


votar a favor de este, especialmente si tiene la contraseña para ambas cuentas
portforwardpodcast

1

Para que esto funcione para mí tanto con Git como con la consola de Heroku, tuve que agregar crear la configuración ssh según las instrucciones de bantic, pero también tuve que crear dos controles remotos para mi configuración .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
¿Y luego empujar a qué? heroku u origen?
jmstone617

1

Esto me ha estado molestando por un tiempo y nunca encontré una solución que me gustara. Finalmente encontré uno.

(Respuesta específica de OS X).

Simplemente puede crear nuevos usuarios. Vaya a Preferencias del sistema -> Usuarios y grupos -> Botón Agregar usuario o grupo. Puede crear algunos usuarios para diferentes cuentas de heroku, acabo de nombrar el mío user1, user2, etc.

Luego vaya a Preferencias del sistema -> Compartir -> Inicio de sesión remoto -> Permitir acceso para: Todos los usuarios

En este punto, puede ir a una terminal y hacer lo siguiente:

$ ssh user1@localhost

Entonces puedes hacer cosas como esta:

$ heroku login
$ heroku keys:add

Esto parece perfecto, pero ¿es posible dar acceso a diferentes carpetas y archivos a diferentes usuarios de ssh?
Fellow Stranger

1

Usé nano .git / config y luego reemplacé el valor de la URL del "heroku" remoto con heroku.com> aplicaciones> configuración> Revelar variables de configuración> URL de Heroku Git


0

Tengo exactamente el mismo problema.

Esta no es la respuesta, pero una solución temporal es agregar su correo electrónico heroku "estándar" como colaborador a la aplicación a la que no puede acceder.


Lo siento, olvidé hacer un seguimiento de esto, pero reiniciar mi computadora resolvió el problema. Puede que no resuelva el tuyo.
Erik

Sí, también leí sobre eso en algún lugar. Aunque no funcionó para mí.
kbjerring

0

estoy usando win7

1) cree otra cuenta de usuario en win7 e inicie sesión en ella

2) abre git bash e inicia sesión en tu nueva cuenta heroku

3) cree y cargue una nueva clave RSA (instrucciones aquí: https://devcenter.heroku.com/articles/keys )

4) luego haz lo que quieras (crea una nueva aplicación, envía un archivo a ella ...)

5) cada vez que necesite trabajar con su cuenta heroku original, simplemente inicie sesión en su cuenta de usuario win original y trabaje con heroku


No recomendaría esto: tener que cambiar de cuenta de PC local es una exageración cuando hay mejores soluciones a continuación.
Rafi Jacoby

esta es una opción de todos modos
mehdok

0

cree una nueva clave pública / privada para un nuevo correo electrónico de la siguiente manera

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

2) proporcione un nuevo nombre de archivo en el que guardar la clave (/home/.ssh/seckey)

3) Luego agregue su nueva clave al ssh-agent: - ssh-add ~ / .ssh / seckey

4) Luego agregue su nueva clave a heroku: - claves heroku: agregue ~ / .ssh / seckey

5) agregue el archivo de configuración SSH como ~ / .ssh / config y el contenido de la siguiente manera

Host heroku.com Nombre de host heroku.com Puerto 22 Identidades Solo sí IdentityFile ~ / .ssh / seckey Usuario mvjohn@klairvoynat.com

Host heroku.com Nombre de host heroku.com Puerto 22 Identidades Solo sí IdentityFile ~ / .ssh / id_rsa Usuario mvjohn@hotmail.com

6) clona el código usando

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


0

¡Instale el complemento de cuentas de Heroku y configúrelo!

Instalación

 heroku plugins:install heroku-accounts

Uso

Para agregar cuentas:

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

Para listar cuentas:

$ heroku accounts
  * personal
    work

Para cambiar a una cuenta diferente:

heroku accounts:set personal

Para encontrar la cuenta corriente:

$ heroku accounts:current
  personal

Para eliminar una cuenta:

$ heroku accounts:remove personal
  Account removed: personal

configúrelo en su cuenta heroku de trabajo e introduzca los cambios.


-1

Edite su configuración para ese proyecto, estableciendo el correo electrónico correcto. Desde la raíz de ese repositorio,git config user.email <heroku email>


Me temo que parece no tener ningún efecto ...
Erik

¿Qué pasa cuando agrega el indicador "--global" a ese comando? A veces, Heroku gem estaba leyendo eso en lugar del correo electrónico de repositorio del proyecto para mí.
danneu
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.