GitHub: настройка нескольких учетных записей

Уже более 3 часов я пытаюсь настроить несколько учетных записей для GitHub и немного устал. Я испробовал почти все возможные способы описания здесь, github и статей, и ни одна из них не сработала. Я совершенно новичок в github и Unix. Так что нужна ваша помощь, чтобы это исправить. Здесь под тем, что я делаю

Я использую Windows 7 и установил два ключа SSH для двух разных учетных записей.

  1. id_rsa
  2. id_rsa_ac2

Чем создал конфигурационный файл в .ssh каталог пользователя и добавленный ниже код

#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

Теперь я пытаюсь добавить удаленный с помощью приведенного ниже кода

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

и нажмите ниже код

git push origin master

Но когда я пытаюсь подтолкнуть, это дает мне ошибку:Error: Permission to myaccount/my.git denied to {account}. // where it is considering default user account and not for ac2 user accountfatal: Could not read from remote repository.

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

Большое спасибо..

Дополнительная информация:

У меня есть тест id_rsa_ac2 и предоставление успешно аутентифицированного сообщения. Но странная вещь дает имя пользователя с оригинальной учетной записью, а не с ac2 имя пользователя аккаунта

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

ИНФОРМАЦИЯ: Окончательный код

@VonC ответ сработал и добавив окончательный код в качестве моего ответа, если кто-то хочет использовать.

3 ответа

Решение

Чтобы ваш конфиг был принят во внимание, вы должны использовать его Host имя в вашем удаленном адресе:

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

Если вы определили HOME переменная окружения (которая не определена по умолчанию в Windows, но определяется, если вы используете msysgitgit-cmd.bat) в каталог, в котором у вас есть каталог.ssh, с его id_rsa_ac2 закрытый ключ и id_rsa_ac2.pub открытый ключ, тогда он будет работать.

Таким образом, согласно ответу @VonC здесь, что я сделал.

  1. Я сгенерировал ключ ssh для другой учетной записи и добавил с id_rsa_ac2 (где ac2 для второй учетной записи)
  2. Чем просто перепроверил либо работает ssh -T ac2.github.com
  3. Созданный файл конфигурации (без расширения) в каталоге /c/Users/yourname/.ssh/

Вот код, который я использовал для файла конфигурации

#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

Так что теперь, когда вы сделали это, вы можете начать использовать обе учетные записи, как вам нужно.

для основной учетной записи я добавил удаленный в качестве источника с git remote add origin git@github/youraccount/rep.gitЧем подтолкнуть использование git push origin master это будет загружено в ваш первый аккаунт.

Для добавления удаленного для второй (ac2) учетной записи используется git remote add ac2 ac2.github/yoursecondaccount/rep.gitЧем подтолкнуть использование git push ac2 master это загрузит на второй (ac2) аккаунт.

Чтобы проверить, добавил ли он удаленное использование git remote -v и если вы хотите удалить кого-либо, чем использовать git remote rm origin где origin - ваш добавленный пульт.

Надеюсь, что эта информация поможет другим, кто сталкивается с той же проблемой.

Еще раз спасибо @VonC

Вот скрипт для автоматизации добавления двух учетных записей GitLab в вашу настройку.

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 workemail@domain.com homeemail@domain.com"
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

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

Еще одно замечание, при использовании git clone git@gitlab.com:<account>/<project>.git ваш должен заменить gitlab.com следующее.

git clone git@gitlab-home:<account>/<project>.git

а также

git clone git@gitlab-work:<account>/<project>.git

соответственно.

Я использую этот скрипт, этот переключатель отступа и другие необходимые, такие как настройка git

https://gist.github.com/milosjanda/a86ebc039293f22fabe723024ec42b46

if [[ -f ~/.ssh/.work ]]; then
  echo "swith to HOME"
  # mv ~/.ssh/id_rsa ~/.ssh/work; mv ~/.ssh/home ~/.ssh/id_rsa
  rm ~/.ssh 2> /dev/null
  ln -s ~/.ssh-work/home ~/.ssh
  git config --global user.email "my.name@gmail.com"
else
  echo "swith to WORK"
  # mv ~/.ssh/id_rsa ~/.ssh/home; mv ~/.ssh/work ~/.ssh/id_rsa
  rm ~/.ssh 2> /dev/null
  ln -s ~/.ssh-work/work ~/.ssh
  git config --global user.email "my.name@company.eu"
fi

# Delete all identities from ssh-agent
ssh-add -D

# Add new identity to ssh-agent
ssh-add
Другие вопросы по тегам