尝试从计算机上同时使用我的实际“工作”存储库和git hub上的个人存储库。
首先建立工作帐户,然后一切正常。
但是,我的个人帐户似乎无法推送到我的个人存储库,该存储库是在其他帐户/电子邮件下设置的。
我尝试将工作密钥复制到我的个人帐户,但这会引发错误,因为密钥只能附加到一个帐户。
我如何从各自的github凭证中推入/拉出两个帐户?
尝试从计算机上同时使用我的实际“工作”存储库和git hub上的个人存储库。
首先建立工作帐户,然后一切正常。
但是,我的个人帐户似乎无法推送到我的个人存储库,该存储库是在其他帐户/电子邮件下设置的。
我尝试将工作密钥复制到我的个人帐户,但这会引发错误,因为密钥只能附加到一个帐户。
我如何从各自的github凭证中推入/拉出两个帐户?
Answers:
您需要做的就是使用多个SSH密钥对配置SSH设置。
此链接易于跟踪(感谢Eric):http : //code.tutsplus.com/tutorials/quick-tip-how-to-work-with-github-and-multiple-accounts--net-22574
生成SSH密钥(Win / msysgit) https://help.github.com/articles/generating-an-ssh-key/
另外,如果您要使用不同的角色来处理多个存储库,则需要确保您的各个存储库具有相应的用户设置:
设置用户名,电子邮件和GitHub令牌–单个存储库的替代设置 https://help.github.com/articles/setting-your-commit-email-address-in-git/
希望这可以帮助。
注意:
某些人可能需要将不同的电子邮件用于不同的存储库,从git 2.13开始,您可以通过编辑位于以下位置的全局配置文件来基于目录设置电子邮件~/.gitconfig
:
[user]
name = Pavan Kataria
email = defaultemail@gmail.com
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
然后,您特定于工作的配置〜/ work / .gitconfig看起来像这样:
[user]
email = pavan.kataria@company.tld
谢谢@alexg在评论中告知我。
使用HTTPS:
将远程URL更改为https:
git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
而且您很高兴:
git push
为了确保提交显示为USERNAME所执行的,也可以为此项目设置user.name和user.email:
git config user.name USERNAME
git config user.email USERNAME@example.com
user.name
并设置user.email
了--global
标志,则按照他在上面所说的做即可在本地为该回购设置它。那解决了很多麻烦。现在,删除旧的回购....
成型
要在单独的github / bitbucket / whatever帐户下管理git repo,您只需要生成一个新的SSH密钥即可。
但在此之前,我们可以开始推/拉式回购与你的第二个身份,我们得让你进入形状-让我们假设你的系统是设置具有典型id_rsa
和id_rsa.pub
密钥对。现在你tree ~/.ssh
看起来像这样
$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── id_rsa
└── id_rsa.pub
首先,为该密钥对命名-添加描述性名称将帮助您记住哪个密钥用于哪个用户/远程
# change to your ~/.ssh directory
$ cd ~/.ssh
# rename the private key
$ mv id_rsa github-mainuser
# rename the public key
$ mv id_rsa.pub github-mainuser.pub
接下来,让我们生成一个新的密钥对 –在这里我将为新密钥命名github-otheruser
$ ssh-keygen -t rsa -b 4096 -f ~/.ssh/github-otheruser
现在,当我们看时,tree ~/.ssh
我们看到
$ tree ~/.ssh
/Users/you/.ssh
├── known_hosts
├── github-mainuser
├── github-mainuser.pub
├── github-otheruser
└── github-otheruser.pub
接下来,我们需要设置一个~/.ssh/config
文件来定义我们的关键配置。我们将使用适当的所有者只读/只写权限创建它
$ (umask 077; touch ~/.ssh/config)
用您喜欢的编辑器打开它,然后添加以下内容
Host github.com
User git
IdentityFile ~/.ssh/github-mainuser
Host github.com-otheruser
HostName github.com
User git
IdentityFile ~/.ssh/github-otheruser
大概,您将拥有一些与主要github身份相关联的现有存储库。因此,“默认” github.com Host
被设置为使用您的mainuser
密钥。如果您不想偏向一个帐户,我将向您展示如何更新系统上的现有存储库以使用更新的ssh配置。
将您的新SSH密钥添加到github
转到github.com/settings/keys添加新的公共密钥
您可以使用以下方式获取公钥内容:将其复制/粘贴到github
$ cat ~/.ssh/github-otheruser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDBVvWNQ2nO5...
现在,您的新用户身份已全部设置好-下面我们将向您展示如何使用它。
完成工作:克隆存储库
那么如何与git和github一起使用呢?好吧,因为没有鸡蛋就不能吃鸡,我们将研究克隆现有的存储库。如果您有一个适用于您工作场所的新github帐户并将您添加到公司项目中,则这种情况可能适用于您。
假设github.com/someorg/somerepo
已经存在并且已经添加了您-克隆就像
$ git clone github.com-otheruser:someorg/somerepo.git
这加粗部分必须在比赛Host
中你的名字,我们的设置~/.ssh/config
文件。正确将git连接到对应的git,IdentityFile
并使用github正确验证您的身份
完成工作:创建一个新的仓库
好吧,因为您不能没有鸡蛋和鸡蛋,所以我们会考虑在您的辅助帐户上发布新的回购协议。这种情况适用于使用其辅助github帐户创建新内容的用户。
假设您已经在本地完成了一些工作,现在可以推送到github了。如果愿意,可以跟着我
$ cd ~
$ mkdir somerepo
$ cd somerepo
$ git init
现在配置此仓库以使用您的身份
$ git config user.name "Mister Manager"
$ git config user.email "someuser@some.org"
现在进行第一次提交
$ echo "hello world" > readme
$ git add .
$ git commit -m "first commit"
检查提交以使用git log查看您的新身份
$ git log --pretty="%H %an <%ae>"
f397a7cfbf55d44ffdf87aa24974f0a5001e1921 Mister Manager <someuser@some.org>
好了,该推送到github了!由于github尚不了解我们的新仓库,因此首先转到github.com/new并创建您的新仓库 -将其命名为somerepo
现在,为了配置您的存储库以使用正确的身份/凭证“与github对话”,我们添加了一个遥控器。假设您的新帐户的github用户名是someuser
...
$ git remote add origin github.com-otheruser:someuser/somerepo.git
这加粗部分绝对是至关重要的,它必须符合Host
我们在定义~/.ssh/config
文件
最后,推动回购
$ git push origin master
更新现有存储库以使用新的SSH配置
假设您已经克隆了一些存储库,但是现在您想使用新的SSH配置。在上面的示例中,我们通过在SSH配置文件中将您以前的id_rsa
/ id_rsa.pub
密钥对分配到来保持原样Host github.com
。这样做没有什么问题,但是我现在至少有5个github配置,我不喜欢将其中之一配置为“默认”配置-我希望每个配置都明确。
在我们有这个之前
Host github.com
User git
IdentityFile ~/.ssh/github-mainuser
Host github.com-otheruser
HostName github.com
User git
IdentityFile ~/.ssh/github-otheruser
因此,我们现在将其更新为(粗体更改)
Host github.com-mainuser
HostName github.com
User git
IdentityFile ~/.ssh/github-mainuser
Host github.com-otheruser
HostName github.com
User git
IdentityFile ~/.ssh/github-otheruser
但这意味着现在任何具有github.com
远程控制的现有存储库都将不再与此标识文件一起使用。但是不用担心,这是一个简单的修复。
要更新任何现有的存储库以使用新的SSH配置,只需打开存储库的git config文件并更新url!
$ cd existingrepo
$ nano .git/config
更新远程来源字段(以粗体显示的更改)
[remote "origin"]
url = github.com-mainuser:someuser/existingrepo.git
fetch = +refs/heads/*:refs/remotes/origin/*
而已。现在,您可以push
/ pull
尽心满意
SSH密钥文件权限
如果您遇到公钥无法正常工作的麻烦,则SSH 对目录和相应密钥文件所允许的文件权限非常严格~/.ssh
根据经验,任何目录都应该700
并且任何文件都应该600
-这意味着它们是所有者可读/只写的文件-任何其他组/用户都不能对其进行读/写
$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/config
$ chmod 600 ~/.ssh/github-mainuser
$ chmod 600 ~/.ssh/github-mainuser.pub
$ chmod 600 ~/.ssh/github-otheruser
$ chmod 600 ~/.ssh/github-otheruser.pub
我如何管理我的SSH密钥
我为所连接的每个主机管理单独的SSH密钥,这样,如果任何一个密钥遭到破坏,我就不必在使用该密钥的所有其他位置上更新密钥。这就像当您从Adobe收到通知时,他们1.5亿用户的信息被盗–现在您必须取消该信用卡并更新依赖于此的每项服务–真是令人讨厌。
我的~/.ssh
目录如下:.pem
每个用户都有一个密钥,在我连接到的每个域的文件夹中。我使用.pem
密钥,因此每个密钥只需要一个文件。
$ tree ~/.ssh
/Users/naomik/.ssh
├── config
├── github.com
│ ├── naomik.pem
│ ├── someusername.pem
├── known_hosts
├── naomi.makes.software
│ ├── naomi.pem
├── somedomain.com
│ ├── someuser.pem
└── someotherdomain.org
└── someuser.pem
这是我的对应/.ssh/config
文件-显然github的内容与回答有关github的问题有关,但是此答案旨在使您具备在任何数量的服务/机器上管理ssh身份的知识。
Host github.com-naomik
HostName github.com
User git
IdentityFile ~/.ssh/github.com/naomik.pem
Host github.com-someuser
HostName github.com
User git
IdentityFile ~/.ssh/github.com/someusername.pem
Host naomi.makes.software
User naomi
IdentityFile ~/.ssh/naomi.makes.software/naomi.pem
Host somedomain.com
HostName 162.10.20.30
User someuser
IdentityFile ~/.ssh/somedomain.com/someuser.pem
Host someotherdomain.org
User someuser
IdentityFile ~/.ssh/someotherdomain.org/someuser.pem
从PEM密钥获取SSH公钥
在上方,您注意到每个键只有一个文件。当我需要提供公共密钥时,只需根据需要生成它。
因此,当github要求您提供ssh公钥时,请运行此命令以将公钥输出到stdout –在需要时复制/粘贴
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAA...
请注意,这也是将密钥添加到任何远程计算机的过程。该ssh-rsa AAAA...
值已复制到远程~/.ssh/authorized_keys
文件
将您的id_rsa
/ id_rsa.pub
密钥对转换为PEM格式
因此,您想驯服关键文件并减少一些文件系统负担吗?将密钥对转换为单个 PEM很容易
$ cd ~/.ssh
$ openssl rsa -in id_rsa -outform pem > id_rsa.pem
或者,随着我们的例子上面,下面我们改名id_rsa -> github-mainuser
和id_rsa.pub -> github-mainuser.pub
-所以
$ cd ~/.ssh
$ openssl rsa -in github-mainuser -outform pem > github-mainuser.pem
现在,仅要确保我们已正确转换此格式,您将需要验证生成的公钥是否与您的旧公钥匹配
# display the public key
$ cat github-mainuser.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==
# generate public key from your new PEM
$ ssh-keygen -y -f someuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA ... R++Nu+wDj7tCQ==
有了github-mainuser.pem
文件后,就可以安全地删除旧文件github-mainuser
和github-mainuser.pub
文件了–仅需要PEM文件;只需在需要时生成公钥^ _ ^
从头开始创建PEM密钥
您无需创建私钥/公钥对,然后再转换为单个PEM密钥。您可以直接创建PEM密钥。
让我们创建一个 newuser.pem
$ openssl genrsa -out ~/.ssh/newuser.pem 4096
获取SSH公钥是相同的
$ ssh-keygen -y -f ~/.ssh/newuser.pem
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACA ... FUNZvoKPRQ==
git clone github.com-otheruser:someorg/somerepo.git
需要git clone git@github.com-otheruser:someorg/somerepo.git
(添加git@
)。至少,这就是我所需要的。
Host github.com
(newline)User git
(newline)IdentityFile ...
通过在〜/ .ssh / config中为github.com创建不同的主机别名,并为每个主机别名提供自己的ssh密钥,您可以轻松使用多个github帐户而不会感到困惑。这是因为github.com并非根据用户(始终只是git)进行区分,而是根据您用于连接的ssh密钥进行区分。只需使用您自己的主机别名配置您的远程源即可。”
上面的摘要来自下面博客文章的评论。
我发现这种解释最清楚。至少从2012年4月起,它对我有效。
http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/
$ ssh-add ~/.ssh/id_rsa_COMPANY
-请参阅错误:权限被拒绝(公钥)-用户文档
由mishaba链接到的http://net.tutsplus.com/tutorials/tools-and-tips/how-to-work-with-github-and-multiple-accounts/上的详细信息对我来说很好。
从该页面:
$ touch ~/.ssh/config
然后将该文件编辑为以下格式(每个帐户一个条目):
#Default GitHub
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
Host github-COMPANY
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_COMPANY
git clone git@github-COMPANY/repo/name.git
以获取正确的ssh密钥时,需要使用“ github.com”或“ github-COMPANY” 。
git clone https://github-COMPANY/GitUserName/projectname.git
似乎不起作用。使用github.com的默认密钥可以正常工作。
ssh: connect to host github.com port 22: Bad file number fatal: The remote end hung up unexpectedly
。到目前为止,https是唯一的方法。 $ git clone https://github-USER/UserName/test_project_user.git Cloning into test_project_user... error: Couldn't resolve host 'github-USER' while accessing https://github-USER/N UserName/test_project_user.git/info/refs fatal: HTTP request failed
我不确定它是否可能与配置文件或我尝试使用https模拟git调用的方式有关。
打开配置文件并添加以下代码。(根据您的帐户更改)
帐户1
# account_1
Host gitlab.com-account_1
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_account_1
帐户2
# Account2
Host gitlab.com-Account2
HostName gitlab.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_Account2
帐户3
# Account_3
Host github.com-Account3
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_Account_3
如下添加远程URL
帐户1
git remote add origin git@gitlab.com-account_1:group_name/repo_name.git
帐户2
git remote add origin git@gitlab.com-Account2:group_name/repo_name.git
帐户3
git remote add origin github.com-Account3:github_username/repo_name.git
确保IdentityFile名称与ssh密钥生成期间创建的名称相同。
PreferredAuthentications publickey
吗?
我使用Shell脚本将我切换到我想成为“活动”帐户的任何位置。从本质上来说,您是从头开始的,要正确配置一个帐户并正常工作,然后将这些文件移动到具有适当前缀的名称。从那时起,您可以使用命令“ github”或“ gitxyz”进行切换:
# my github script
cd ~/.ssh
if [ -f git_dhoerl -a -f git_dhoerl.pub -a -f config_dhoerl ]
then
;
else
echo "Error: missing new files"
exit 1
fi
# Save a copy in /tmp, just in case
cp id_rsa /tmp
cp id_rsa.pub /tmp
cp config /tmp
echo "Saved old files in /tmp, just in case"
rm id_rsa
rm id_rsa.pub
rm config
echo "Removed current links/files"
ln git_dhoerl id_rsa
ln git_dhoerl.pub id_rsa.pub
ln config_dhoerl config
git config --global user.email "dhoerl@<company>.com"
git config --global github.user "dhoerl"
git config --global github.token "whatever_it_is"
ssh-add -D
我很幸运。我还在Xcode中创建了一个运行脚本(适用于Mac用户),因此除非我进行了适当的设置(因为它使用git),否则它不会生成我的项目:
运行依赖项之后的脚本(使用/ bin / ksh作为外壳):
if [ "$(git config --global --get user.email)" != "dhoerl@<company>.com" ]
then
exit 1
fi
编辑:添加了对新文件存在的测试,并将旧文件复制到/ tmp以解决下面@naomik的评论。
id_rsa
和id_rsa.pub
密钥之前运行该脚本,则他们可能会被锁定在遥控器之外。
这个答案是给初学者的(none-git gurus)。我最近遇到了这个问题,也许只是我一个问题,但是大多数答案似乎都需要对git有相当的了解。在阅读了包括该线程的几个堆栈溢出答案之后,这是我需要采取的步骤,以便在GitHub帐户之间轻松切换(例如,假设有两个GitHub帐户,github.com/personal和gitHub.com/work):
ls -al ~/.ssh
.pub
因此您应该为personal
和work
帐户设置两个。如果只有一个或没有一个,则生成其他明智的时间可以跳过此步骤。ssh-keygen -t rsa -C "the copied email"
,您将看到:/.../.ssh/id_rsa_work
如果为工作帐户生成。提供密码或直接输入以忽略它,您将看到类似“密钥的randomart图片为:”和图片的内容。完成。ls -al ~/.ssh
再次运行时,您应该会看到两个ssh键。pbcopy < ~/.ssh/id_rsa_work.pub
,替换id_rsa_work.pub
为您所称的名称。id_rsa_work
],然后导航至编辑全局git配置:最后一步是确保全局配置文件知道所有github帐户(可以这么说)。
运行git config --global --edit
以编辑此全局文件,如果这将打开vim,并且您不知道如何使用它,请按i
进入插入模式,按如下所示编辑文件,然后按esc键,然后:wq
退出以退出插入模式:
[inside this square brackets give a name to the followed acc.]
name = github_username
email = github_emailaddress
[any other name]
name = github_username
email = github_email
[credential]
helper = osxkeychain
useHttpPath = true
完成!,现在当尝试从存储库中推入或拉出时,将询问您哪个GitHub帐户应与此存储库链接,并且仅询问一次,本地配置将记住此链接,而不记住全局配置,因此您可以工作链接到不同帐户的不同存储库上,而不必每次都编辑全局配置。
更简单易修,避免造成混乱。
Windows用户可以将多个或不同的git帐户用于不同的项目。
请执行以下步骤:转到控制面板,然后搜索凭据管理器。然后转到凭据管理器-> Windows凭据
现在删除git:https // github.com通用凭证标题下节点
这将删除当前凭据。现在您可以通过git pull添加任何项目,它将询问用户名和密码。
当您遇到其他帐户的任何问题时,请执行相同的过程。
谢谢
刚刚在Windows上找到了解决方案,对每个存储库都使用了凭据:
cd c:\User1\SomeRepo
git config --local credential.https://github.com.user1 user1
git config --local credential.useHttpPath true
git config --local credential.helper manager
git remote set-url origin https://USERNAME@github.com/USERNAME/PROJECTNAME.git
凭证格式。https://github.com。告诉凭证帮助者凭证的URL。“ useHttpPath”告诉凭证管理器使用凭证的路径。如果省略useHttpPath,则凭证管理器将为https://github.com存储一个凭证。如果包含该凭据,则凭据管理器将存储多个凭据,这正是我真正想要的。
我发现这个宝石非常有用:sshwitch
https://github.com/agush22/sshwitch
http://rubygems.org/gems/sshwitch
它有助于切换出ssh密钥。请记住先备份所有内容!
另外,为了确保提交具有与之关联的正确电子邮件地址,我确保〜/ .gitconfig文件具有正确的电子邮件地址。
最简单明了的方法(IMHO)-没有配置文件也没有太多麻烦
只需创建另一个ssh密钥即可。
假设您有一个新的GitHub帐户,只需为其创建一个新密钥:
sh-keygen -t rsa -C "email@work_mail.com" -f "id_rsa_work_user1"`
现在,您应该拥有旧的和新的,然后运行它们:
ls -al ~/.ssh
您只需要运行一次以上。
从现在开始,每次您要在两者之间切换时,只需运行:
ssh-add -D
ssh-add ~/.ssh/id_rsa_work_user1 #make to use this without the suffix .pub
为了切换到旧版本,请再次运行:
ssh-add -D
ssh-add ~/.ssh/<previous id_rsa>
IntelliJ Idea具有对该https://www.jetbrains.com/help/idea/github.html#da8d32ae的内置支持
如果您不想弄乱~/.ssh/config
这里提到的文件,可以git config core.sshCommand "ssh -i ~/.ssh/custom_id_rsa"
在要从另一个帐户提交的仓库中运行。
其余设置相同:
为第二个帐户创建一个新的SSH密钥 ssh-keygen -t rsa -f ~/.ssh -f ~/.ssh/custom_id_rsa
使用您的其他帐户登录github,转到https://github.com/settings/keys,然后粘贴以下内容~/.ssh/custom_id_rsa.pub
确保您使用的是SSH而不是HTTPS作为远程URL: git remote set-url origin git@github.com:upstream_project_teamname/upstream_project.git
您不必为个人和工作维护两个不同的帐户。实际上,Github建议您维护一个帐户并帮助您合并两个帐户。
如果您决定不需要维护多个帐户,请点击以下链接进行合并。
https://help.github.com/articles/merging-multiple-user-accounts/
与其他答案不同,在其他情况下,您需要遵循几个步骤来使用同一台机器上的两个不同的 github帐户,对我来说,它需要两个步骤。
您只需要:
1)为您的每个帐户生成SSH公钥和私钥对~/.ssh
使用不同的名称和位置,
2)将生成的公钥添加到>> >>下的相应帐户中Settings
SSH and GPG keys
New SSH Key
。
要生成SSH公钥和私钥对,请使用以下命令:
cd ~/.ssh
ssh-keygen -t rsa -C "email@work.com" -f "id_rsa_WORK"
ssh-keygen -t rsa -C "email@gmail.com" -f "id_rsa_PERSONAL"
由于上述命令的结果,id_rsa_WORK
而id_rsa_WORK.pub
文件系统就会为您创建工作帐户(例如- git.work.com),并id_rsa_PERSONAL
和id_rsa_PERSONAL.pub
您将创建个人帐户(例如- github.com)。
创建完成后,请复制每个公众的内容(*.pub
)文件中,并对每个帐户执行步骤2。
PS:~/.ssh/config
如果两个帐户的主机名不同,则不必为文件中的每个git帐户创建主机条目,如其他答案所述。
您应该并且一定不要使用某些通用凭据来推送项目。在新机器上启动后,请按照以下步骤设置并正确使用您的gitlab凭据:
所有这一切如下:
# create the public / private key credentials on that specific machine
ssh-keygen -t rsa -b 4096 -C "<<you>>@org.net" -f ~/.ssh/id_rsa.<<you>>.`hostname -s`
# setup your public key in the gitlab ui
cat ~/.ssh/id_rsa.<<you>>.`hostname -s`
# make sure you clone the repo via the git and not http url
git clone git@git.in.org.net:org/some-repo.git
# set the git alias to avoid constant typing of the repeating prefix to the git cmd
alias git='GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa.<<you>>.`hostname -s`" git'
# during git commit ALWAYS use the author and e-mail flags
git add --all ; git commit -nm "$git_msg" --author "YourFirstName YourLastName <you@phz.fi>"
# use git as normal
git fetch --all; git pull --all
在终端/命令行中创建一个新的SSH密钥。
ssh-keygen -t rsa -C“您的电子邮件地址”
然后将显示以下内容:
生成公共/私有rsa密钥对。输入要在其中保存密钥的文件(/home/your_username/.ssh/id_rsa):
复制并粘贴路径,后跟文件的可识别名称:
/home/your_username/.ssh/id_rsa_personal
4)然后会要求您提供以下信息:
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
5)现在,您可以键入以下命令以查看本地计算机上的所有SSH密钥:
ls -al ~/.ssh
您应该能够看到新的SSH密钥文件。如您所见,我同时拥有id_rsa_test和id_rsa_personal.pub。
drwx------ 2 gmadmin gmadmin 4096 Nov 16 22:20 .
drwxr-xr-x 42 gmadmin gmadmin 4096 Nov 16 21:03 ..
-rw------- 1 gmadmin gmadmin 1766 Nov 16 22:20 id_rsa_personal
-rw-r--r-- 1 gmadmin gmadmin 414 Nov 16 22:20 id_rsa_personal.pub
-rw-r--r-- 1 gmadmin gmadmin 444 Nov 6 11:32 known_hosts
6)接下来,您需要复制存储在id_rsa_personal.pub文件中的SSH密钥。您可以在自己选择的文本编辑器中打开它。我当前正在使用原子,因此我使用以下命令打开了文件:
atom ~/.ssh/id_rsa_personal.pub
然后,您将获得类似于以下内容的信息:
ssh-rsa AAB3HKJLKC1yc2EAAAADAQABAAABAQCgU5 + ELtwsKkmcoeF3hNd7d6CjW + dWut83R / Dc01E / YzLc5ZFri18doOwuQoeTPpmIRVDGuQQsZshjDrTkFyNcWH1MKHWMM7L
7)复制并导航到您的GitHub帐户→设置→SSH和GPG密钥8)单击新建SSH密钥。复制密钥,为其命名并添加。9)从终端添加密钥
ssh-add ~/.ssh/id_rsa_personal
Enter passphrase for /home/your_username/.ssh/id_rsa_personal:
10)配置用户和密码。
git config --global user.name "gitusername"
git config --global user.email "gitemail"
11)我们现在准备提交并推动。
git init
git add .
git commit
git push
如果您已经创建或克隆了另一个存储库,但无法从origin
或中提取upstream
使用以下命令从该目录中添加ssh密钥。
这是我在这里遇到的错误:
Warning: Permanently added the RSA host key for IP address '61:fd9b::8c52:7203' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我使用了以下命令,这有效:
ssh-add ~/.ssh/id_rsa_YOUR_COMPANY_NAME
ssh-add ~/.ssh/id_rsa_COMPANY
<br/>告诉ssh-agent包括它以供使用。<hr />上面的教程对Rest来说对我来说很好。