Nhiều tài khoản heroku


92

Tôi đang gặp sự cố khi làm việc với nhiều tài khoản Heroku trên máy tính của mình.

Vấn đề là nó đã hoạt động tốt trước đây bằng cách chuyển đổi tài khoản với đá quý heroku. Nhưng bây giờ (ngay cả khi tôi đã tạo các khóa SSH mới) nó sẽ không hoạt động.

Khi tôi làm điều git push heroku masterđó, nó chỉ nói:

my@email.com không được phép truy cập my_app_name

Có ai có bất kỳ lời khuyên về cách tôi có thể giải quyết vấn đề này?


ssh yourid @ server -v cung cấp gì?
Adam Dymitruk

"Quyền bị từ chối (khóa công khai)."?
Erik

Ồ, một lưu ý… E-mail "my@email.com" không giống với e-mail của tài khoản Heroku ... nên có vẻ như có một số loại kết hợp gây ra sự cố.
Erik

sao chép cả khóa riêng tư và khóa công khai dưới git / .ssh / diectory của bạn. nó ổn với tôi!
Dmitri Algazin

Câu trả lời:


162

Bạn cần đảm bảo rằng bạn đang sử dụng đúng khóa ssh.

Cách để làm điều này (và cách plugin tài khoản heroku nhắc bạn) là thêm một phần vào tệp cấu hình ssh của bạn trong ~ / .ssh / config. Ví dụ, đối với tài khoản heroku công việc của tôi, tôi có điều này trong cấu hình ssh của mình:

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

Bây giờ, và điều này rất quan trọng, bạn cần đảm bảo rằng điều khiển từ xa git của bạn được thiết lập để sử dụng cùng một máy chủ có tên đó . Trong trường hợp này, nó là heroku.work . Thông thường, nó sẽ là heroku.com nếu bạn chỉ sử dụng heroku với một tài khoản duy nhất.

Vì vậy, bạn sẽ cần chỉnh sửa điều khiển từ xa git (bạn có thể thực hiện việc này trong .git/configtệp repo trên máy của mình). Thay đổi tệp giống như sau:

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

Lưu ý về heroku. làm việc , không phải heroku. com và thay thế <appname> bằng tên ứng dụng của bạn (hay còn gọi là tên repo của bạn) trên heroku.


1
Thx, đó là những gì tôi cần khi tạo ứng dụng sản phẩm của mình từ bảng điều khiển của heroku.
Bachet

1
git@heroku.work ... không tồn tại như một điểm cuối. Làm cách nào để biến nó thành điểm cuối để đẩy tới? - À, bạn cần plugin tài khoản heroku.
jmstone617

1
@jmstone Những thay đổi để .ssh/configlàm cho nó để heroku.workquyết tâmheroku.com
bantic

Ya đó là một vấn đề khác về phía tôi, đã tìm ra tất cả. Cảm ơn!
jmstone617,

Tôi đã đánh dấu trang này. Bất cứ khi nào tôi gặp vấn đề khi chuyển sang Heroku, tôi đều đọc câu trả lời này và nhận ra mình cần phải làm gì.
Septerr

36

Tôi đã giải quyết vấn đề này bằng cách sử dụng plugin tài khoản heroku

xem ở đây để được hướng dẫn

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


Vấn đề lớn nhất với công cụ này là nó tạo ra các khóa SSH không được mã hóa.
Wolfram Arnold,

tự tạo khóa theo cách thủ công và vấn đề đó sẽ biến mất. phích cắm này là hoàn hảo cho điều này!
Chris Hough

8

Bạn phải được chấp nhận làm cộng tác viên trong dự án mà bạn không sở hữu.

Nó hoạt động như thế này (sử dụng git):

  1. Chủ dự án truy cập bảng điều khiển của heroku cho dự án
  2. Chủ sở hữu thêm địa chỉ email của cộng tác viên (địa chỉ được sử dụng để đăng ký cộng tác viên)
  3. Cộng tác viên thiết lập khóa bảo mật công khai trong tài khoản của anh ấy (nếu anh ấy chưa thiết lập)
  4. Cộng tác viên thêm và thiết lập dự án khác như một điều khiển từ xa khác

Và đó phải là tất cả mọi người; bạn chỉ cần nhấn vào điều khiển từ xa khác khi triển khai trên ứng dụng khác.


Cảm ơn bạn!!! Tôi đã dành hàng giờ để tìm ra điều này. Thậm chí thử tất cả các cách tiếp cận khác nhau trên SO và các trang khác. Thêm cùng một email vào cả hai dự án trên Heroku chắc chắn là giải pháp dễ dàng nhất.
B Seven,

Tôi đã dành nhiều thời gian để thiết lập một tệp nhận dạng và làm đủ mọi thủ thuật để làm cho nhiều khóa hoạt động nhưng câu trả lời này cho đến nay là cách dễ nhất để thực hiện điều này. Thêm tài khoản ban đầu của bạn làm cộng tác viên và sử dụng cùng một khóa. Dễ dàng.
Peter Nixey

6

Tôi sẽ thêm một vài thứ vào plugin tài khoản heroku ... ví dụ này giả định tài khoản heroku có sẵn của bạn sẽ là heroku.work và bạn đang thêm một tài khoản mới heroku.personal.

Nó cũng mô tả cách di chuyển một ứng dụng từ ứng dụng này sang ứng dụng khác, ví dụ: nếu bạn đã đạt đến tối đa 25 ứng dụng và đang tạo tài khoản mới và muốn chuyển một số dự án phụ và ứng dụng thử nghiệm ra khỏi tài khoản chính của mình.

  1. Bạn có thể cần sử dụng plugin để tạo CẢ 2 tài khoản cũ và tài khoản mới của mình, ví dụ: nếu bạn đã có một tài khoản mới để bắt đầu, bạn không thể chỉ thêm một heroku mới. Cá nhân, bạn cần tạo heroku.work để thay thế tài khoản cũ của mình
  2. Bạn sẽ cần gán lại các ứng dụng cũ cho heroku.work của mình
  3. nếu bạn đang di chuyển một ứng dụng, không chỉ định ứng dụng cho heroku.personal (đang sử dụng heroku accounts:set personal) cho đến khi bạn chuyển ứng dụng bằng cách sử dụng lệnh heroku sharingnhư được mô tả https://devcenter.heroku.com/articles/transferring-apps

Vì vậy, các bước bạn có thể cần là:

  1. Cài đặt plugin tài khoản heroku
  2. Truy cập heroku.com và tạo tài khoản mới của bạn (nếu bạn chưa có tài khoản thứ hai)
  3. chạy heroku accounts:add work --autođể tạo một tài khoản heroku.work mới để thay thế tài khoản mặc định cũ của bạn (vì vậy hãy sử dụng chính thông tin đăng nhập mà bạn đã sử dụng từ trước đến nay). Bạn CŨNG cần tải khóa mới của mình lên heroku:heroku keys:add ~/.ssh/identity.heroku.work.pub
  4. chạy heroku accounts:add personal --autođể tạo tài khoản heroku.personal mới (ví dụ: sử dụng thông tin đăng nhập mới cho tài khoản heroku mới của bạn). Bạn CŨNG cần tải khóa mới của mình lên heroku:heroku keys:add ~/.ssh/identity.heroku.personal.pub
  5. Đối với mỗi ứng dụng, cd đến thư mục gốc của dự án rồi chạy heroku accounts:set work(tất cả những gì nó thiết lập git để sử dụng heroku.work của bạn, đó là (bỏ ví dụ này) cùng một tài khoản heroku mà bạn đã sử dụng từ trước đến nay, chỉ bây giờ nó được gọi là heroku. công việc.
  6. Nếu bạn muốn chuyển một ứng dụng từ heroku.work sang heroku.personal, hãy (a) thêm tài khoản heroku mới làm cộng tác viên với heroku sharing:add <new owner email>(b) trong thư mục cục bộ của bạn, chuyển ứng dụng sang heroku.personal bằng cách sử dụng heroku accounts:set personal(c) transfer ** ứng dụng từ tài khoản cũ sang tài khoản mới bằng cách sử dụng, heroku sharing:transfer <new owner email>sau đó (d) xóa cộng tác viên địa chỉ email cũ (nếu bạn muốn) bằng cách sử dụngheroku sharing:remove <old owner email>

** Lưu ý liên kết heroku mà tôi đã cung cấp cho biết có các yêu cầu đặc biệt để di chuyển một ứng dụng bằng bất kỳ tài nguyên trả phí nào. Nói chung, hãy xóa các tài nguyên đã trả tiền, sau đó thêm lại sau hoặc nhờ bộ phận hỗ trợ thực hiện.


6

Plugin Heroku https://github.com/ddollar/heroku-accounts đã không được dùng nữa. Heroku hiện đã duy trì hoạt động của riêng mình tại https://github.com/heroku/heroku-accounts . Thật không may, nó dường như không lưu trữ từng dự án tài khoản mà nó sẽ được sử dụng, vì vậy bạn cần phải chạy

$ heroku accounts:set account_name

mỗi khi bạn muốn sử dụng công cụ dòng lệnh Heroku.

Giải pháp nhanh chóng cho những người có quyền truy cập vào bash shell: tạo một thư mục bin cục bộ (nó đã có trong các ứng dụng Rails) và tạo bin / heroku ở đó. Nội dung:

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

(thay thế "project_name" nếu thích hợp) Sau đó chạy

$ chmod + x bin / heroku

Sau đó bạn có thể chạy

Bảng điều khiển chạy $ bin / heroku

và nó sẽ tự động sử dụng tài khoản Heroku phù hợp với bạn. Vẫn tốt hơn là thêm ./bin vào đường dẫn của bạn để bạn quay lại chỉ chạy:

Bảng điều khiển chạy $ heroku


2

Tôi bắt đầu sử dụng plugin tài khoản heroku nhưng sau đó nhận ra rằng bạn của tôi có thể chỉ cho tôi làm cộng tác viên trên tài khoản heroku của anh ấy và đó là tất cả những gì cần thiết.


upvote thế này, đặc biệt là nếu bạn có mật khẩu cho cả hai tài khoản
portforwardpodcast

1

Để điều này hoạt động với tôi với cả Git và bảng điều khiển Heroku, tôi phải thêm tạo cấu hình ssh theo hướng dẫn của bantic, nhưng tôi cũng phải tạo hai điều khiển từ xa cho cấu hình .git của mình:

[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
Và sau đó đẩy đến cái gì? Heroku hay nguồn gốc?
jmstone617

1

Điều này đã làm tôi khó chịu trong một thời gian, và tôi chưa bao giờ tìm ra giải pháp mà tôi thích. Cuối cùng đã tìm thấy một.

(Câu trả lời cụ thể cho OS X.)

Bạn chỉ có thể tạo người dùng mới. Đi tới Tùy chọn hệ thống -> Người dùng & Nhóm -> Nút Thêm người dùng hoặc nhóm. Bạn có thể tạo một vài người dùng cho các tài khoản heroku khác nhau, tôi chỉ đặt tên là user1, user2, v.v.

Sau đó đi tới Tùy chọn hệ thống -> Chia sẻ -> Đăng nhập từ xa -> Cho phép truy cập cho: Tất cả người dùng

Tại thời điểm này, bạn có thể đi đến một thiết bị đầu cuối và thực hiện như sau:

$ ssh user1@localhost

Sau đó, bạn có thể làm những việc như sau:

$ heroku login
$ heroku keys:add

Điều này có vẻ hoàn hảo, nhưng liệu có thể cấp cho những người dùng ssh khác nhau quyền truy cập vào các thư mục và tệp giống nhau không?
Fellow Stranger

1

Tôi đã sử dụng nano .git / config, sau đó thay thế giá trị url của "heroku" từ xa bằng heroku.com> ứng dụng> cài đặt> Hiển thị vars cấu hình> URL Heroku Git


0

Tôi có chung vấn đề đó.

Đây không phải là câu trả lời, nhưng một giải pháp tạm thời là thêm email heroku "tiêu chuẩn" của bạn làm cộng tác viên vào ứng dụng mà bạn không thể truy cập.


Xin lỗi, tôi quên theo dõi vấn đề này, nhưng khởi động lại máy tính của tôi đã giải quyết được sự cố. Có thể không giải quyết của bạn.
Erik

Vâng, tôi cũng đã đọc về điều đó ở một số nơi. Nó không hoạt động cho tôi mặc dù.
kbjerring

0

tôi đang sử dụng win7

1) tạo một tài khoản người dùng khác trong win7 và đăng nhập vào nó

2) mở git bash và đăng nhập vào tài khoản heroku mới của bạn

3) tạo và tải lên khóa RSA mới (hướng dẫn tại đây: https://devcenter.heroku.com/articles/keys )

4) sau đó làm những gì bạn muốn (tạo ứng dụng mới, đẩy tệp vào nó .....)

5) mỗi khi bạn cần làm việc với tài khoản heroku ban đầu của mình, chỉ cần đăng nhập vào tài khoản người dùng win ban đầu của bạn và làm việc với heroku


Tôi sẽ không khuyến nghị điều này - việc phải chuyển đổi tài khoản PC cục bộ là quá mức cần thiết khi có các giải pháp tốt hơn bên dưới.
Rafi Jacoby

dù sao thì đây cũng là một lựa chọn
mehdok 22/02/13

0

tạo khóa công khai / riêng tư mới cho email mới như sau

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

2) cung cấp tên tệp mới để lưu khóa (/home/.ssh/seckey)

3) Sau đó thêm khóa mới của bạn vào ssh-agent: - ssh-add ~ / .ssh / seckey

4) Sau đó, thêm khóa mới của bạn vào heroku: - các khóa heroku: thêm ~ / .ssh / seckey

5) thêm tệp cấu hình SSH dưới dạng ~ / .ssh / config và nội dung như sau

Host heroku.com Hostname heroku.com Port 22 Identities Chỉ có IdentityFile ~ / .ssh / seckey Người dùng mvjohn@klairvoynat.com

Host heroku.com Hostname heroku.com Port 22 Identities Chỉ có IdentityFile ~ / .ssh / id_rsa User mvjohn@hotmail.com

6) sao chép mã bằng cách sử dụng

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


0

Cài đặt plugin tài khoản Heroku và định cấu hình nó !!

Cài đặt

 heroku plugins:install heroku-accounts

Sử dụng

Để thêm tài khoản:

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

Để liệt kê các tài khoản:

$ heroku accounts
  * personal
    work

Để chuyển sang một tài khoản khác:

heroku accounts:set personal

Để tìm tài khoản hiện tại:

$ heroku accounts:current
  personal

Để xóa tài khoản:

$ heroku accounts:remove personal
  Account removed: personal

đặt thành tài khoản heroku đang hoạt động của bạn và thực hiện các thay đổi.


-1

Chỉnh sửa cấu hình của bạn cho dự án đó, đặt email chính xác. Từ gốc của kho lưu trữ đó,git config user.email <heroku email>


Có vẻ như không có tác dụng, tôi sợ…
Erik

Còn khi bạn thêm cờ "--global" vào lệnh đó thì sao? Đôi khi đá quý Heroku đã đọc nó thay vì email repo của dự án cho tôi.
danneu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.