2012-11-25 45 views
5

Tôi đang cố gắng từ hơn 3 giờ để thiết lập nhiều tài khoản cho github và litteraly mệt mỏi. Tôi đã thử gần như tất cả các cách có thể mô tả ở đây, github và các bài báo và không ai trong số họ làm việc. Tôi hoàn toàn newbie để github và Unix là tốt. Vì vậy, cần sự giúp đỡ của bạn để sửa lỗi này. Dưới đây là những gì tôi đang làmGitHub: Nhiều thiết lập tài khoản

Tôi đang sử dụng Windows 7 và đã đặt hai khóa ssh cho hai tài khoản khác nhau.

  1. id_rsa
  2. id_rsa_ac2

Thần tạo ra tập tin cấu hình trong .ssh thư mục của người dùng và thêm mã dưới đây

#Account one 
Host github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Projects/.ssh/id_rsa 

#Account two 
Host ac2.github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Projects/.ssh/id_rsa_ac2 

Bây giờ tôi đang cố gắng để thêm từ xa bằng cách sử dụng mã dưới đây

git remote add origin [email protected]:myaccount/my.git 

và đẩy với mã dưới đây

git push origin master 

Nhưng khi tôi đang cố gắng để đẩy nó đem lại cho tôi Lỗi: Error: Permission to myaccount/my.git denied to {account}. // where it is considering default user account and not for ac2 user account fatal: Could not read from remote repository.

Please make sure you have the correct access rights and the repository exists.

Thanks a lot ..

Thông tin bổ sung:

Tôi đã kiểm tra id_rsa_ac2 và cung cấp thông báo được xác thực thành công. Nhưng điều kỳ lạ là cho tên người dùng với tài khoản ban đầu không phải với tên người dùng ac2 tài khoản

Hi {username!} You've successfully authenticated, but GitHub does not provide shell access. //here user id should be from ac2 but it is showing userid from id_rsa and not from id_rsa_ac2

THÔNG TIN: Final Mã

@ câu trả lời VonC của làm việc và thêm mã cuối cùng là câu trả lời của tôi nếu có ai muốn sử dụng.

Trả lời

1

Đối với cấu hình của bạn được đưa vào tài khoản, bạn cần phải sử dụng tên Host của nó trong địa chỉ từ xa của bạn:

git remote add origin ac2.github.com:myaccount/my 

Nếu bạn đã xác định một biến HOME môi trường (mà không được xác định bởi mặc định trên Windows , nhưng được xác định nếu bạn đang sử dụng msysgit git-cmd.bat) vào thư mục mà bạn có thư mục .ssh của mình, với khóa riêng id_rsa_ac2id_rsa_ac2.pub khóa công khai, sau đó nó sẽ hoạt động.

+0

Các lời khuyên khác: http://stackoverflow.com/a/13356544/6309 – VonC

+0

Trợ giúp tuyệt vời! nó được thực hiện và làm việc cả hai tài khoản. Chỉ cần cho kiến ​​thức tôi phải sử dụng cả hai câu trả lời của bạn, nơi bạn mô tả để xác định 'User git' hơn nó làm việc. Cảm ơn rất nhiều –

+0

@VonC Tôi đã để lại một câu trả lời khác với một kịch bản để tự động hóa mọi thứ. (mặc dù quá trình này có một chút khác biệt nhưng nó hoạt động cho GitLab, và tôi cũng giả sử GitHub). Hãy cho tôi biết nếu bạn nghĩ tôi nên thêm bất cứ điều gì – Procyclinsur

2

Vì vậy, theo câu trả lời của @ VonC ở đây những gì tôi đã làm.

  1. Tôi có tạo ra chìa khóa ssh cho tài khoản khác và thêm vào với id_rsa_ac2 (nơi AC2 là dành cho tài khoản thứ hai)
  2. Thần chỉ kiểm tra chéo hoặc nó hoạt động với ssh -T ac2.github.com
  3. Created cấu hình tập tin (không gia hạn) trong /c/Users/yourname/.ssh/ thư mục

đây là mã gì tôi sử dụng cho tập tin cấu hình

#Account one 
Host github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Users/yourname/.ssh/id_rsa 
    User git 

#Account two 
Host ac2.github.com 
    HostName github.com 
    PreferredAuthentications publickey 
    IdentityFile /c/Users/yourname/.ssh/id_rsa_ac2 
    User git 

Vì vậy, bây giờ khi bạn đã thực hiện việc này, bạn có thể bắt đầu sử dụng cả hai tài khoản khi bạn cần.

cho tài khoản chính Tôi đã thêm từ xa làm nguồn gốc với git remote add origin [email protected]/youraccount/rep.git Hơn để sử dụng đẩy git push origin master điều này sẽ tải lên tài khoản đầu tiên của bạn.

Để thêm từ xa cho tài khoản thứ hai (ac2) được sử dụng git remote add ac2 ac2.github/yoursecondaccount/rep.git Hơn để đẩy sử dụng git push ac2 master, điều này sẽ tải lên tài khoản thứ hai (ac2).

Để kiểm tra xem nó đã thêm sử dụng từ xa git remote -v và trong trường hợp bạn muốn xóa bất kỳ ai ngoài sử dụng git remote rm origin nơi nguồn gốc của bạn là từ xa được thêm vào.

Hy vọng thông tin này sẽ giúp người khác có cùng vấn đề.

Một lần nữa xin cảm ơn @VonC

+1

Phản hồi tuyệt vời! +1 – VonC

+0

Đó là tất cả vì bạn! Một lần nữa xin cảm ơn sự giúp đỡ và đánh giá cao của bạn :) –

+0

@CodeLover Tôi để lại một câu trả lời khác với một kịch bản để tự động hóa mọi thứ. (mặc dù quá trình này có một chút khác biệt nhưng nó hoạt động với GitLab, và tôi cũng sẽ giả sử GitHub). Hãy cho tôi biết nếu bạn nghĩ tôi nên thêm bất cứ thứ gì. – Procyclinsur

1

Đây là tập lệnh Tự động thêm hai tài khoản GitLab vào thiết lập của bạn.

https://gitlab.com/procyclinsur/Fedora-Environment

#!/bin/bash 

# VERIFIED FOR FEDORA 27 MATE (Likely to work in others distros) 
# Multi Account SSH for GitLab/OpenSSH Setup. 
ROOT=root 
if ((whoami == $ROOT)) 
    then 
    echo "Run as standard user" 
elif [[ -z $1 || -z $2 ]] 
    then 
    echo "command usage: setup-gitlab.bash [email protected] [email protected]" 
elif [[ ! $1 =~ .*@.*\..* ]] 
    echo "Work email is not in the correct format. Must match regex .*@.*\..*" 
elif [[ ! $2 =~ .*@.*\..* ]] 
    echo "Home email is not in the correct format. Must match regex .*@.*\..*" 
else 
    HOMEEMAIL=$1 
    WORKEMAIL=$2 
    USRNAME=`whomai` 

# /home/<username>/.ssh/ 
# ├── config 
# ├── home-gitlab-key 
# ├── home-gitlab-key.pub 
# ├── known_hosts 
# ├── work-gitlab-key 
# └── work-gitlab-key.pub 

#Executed to match the above directory. 
    ssh-keygen -t rsa -C "$WORKEMAIL" -b 4096 -f work-gitlab -N "" 
    ssh-keygen -t rsa -C "$HOMEEMAIL" -b 4096 -f home-gitlab -N "" 

# Agent Configuration Setup (.ssh/config) 
    cat >> ~/.ssh/config <<EOF 
Host gitlab-work 
    HostName gitlab.com 
    User git 
    IdentityFile /home/$USRNAME/.ssh/work-gitlab-key 

Host gitlab-home 
    HostName gitlab.com 
    User git 
    IdentityFile /home/$USRNAME/.ssh/home-gitlab-key 
EOF 

# Agent Setup (potentially optional???) 
    cat >> ~/.bashrc <<'EOF' 
eval "$(ssh-agent -s)" 
for i in `ls ~/.ssh/*.pub` ; do ssh-add ${i::-4} ; done 
EOF 

    . .bashrc 

fi 

Sau khi chạy kịch bản bạn sẽ cần phải sao chép nội dung của hai khóa công khai tạo cho mỗi tài khoản GitLab tương ứng.

Lưu ý khác, khi sử dụng git clone [email protected]:<account>/<project>.git, bạn nên thay thế gitlab.com như sau.

git clone [email protected]:<account>/<project>.git 

git clone [email protected]:<account>/<project>.git 

tương ứng.

Các vấn đề liên quan