五月
22
2017

SSH 方式下为 Git 设置多用户登录

特别说明

这个是目前开发过程中经常要遇到的问题了。呃,一般是系统装了环境之后会用到。又是 Hy369 要说的老话了:唉,不想每次都去谷歌百度了!

功能说明

针对 GIT 的 SSH 的方式,实现用不同的账号和密钥访问不同的仓库。

可能的场景:

  • 通过电子邮箱1和密钥1访问 Github
  • 通过电子邮箱2和密钥2访问 Oschina
  • 通过电子邮箱3和密钥3访问公司内部仓库

实现方式

第一步 生成各个站点需要用到的密钥

相关命令与推荐参数:

# 切换到 .ssh 目录(建议,可偷懒)
cd ~/.ssh
# 生成密钥文件
ssh-keygen -t rsa -C "youremail@mail.com" -f 密钥文件名,如:id_rsa.github
# 加载私钥文件
ssh-add 密钥文件名

命令说明:

  • 推荐切换到 .ssh 目录下面,Windows 环境下,.ssh目录在 C:\Users\登录账号同名文件夹\。这样可以在输入生成文件路径的时候省事。若不存在这个文件夹,直接创建即可。
  • ssh-keygen -t 参数表示生成的类型为:rsa
  • ssh-keygen -C 注释,推荐带上,这样拷贝公钥到 Git 仓库中时,Web端一般会自动把 Comment 作为公钥名称显示,嗯,又可以偷懒了。
  • ssh-keygen -f 输出密钥文件的路径,很多教程中,都没有这个选项,这样就导致执行时会询问把文件用什么名字存在哪里。个人认为:不利于偷懒,所以推荐带这个选项咯。
  • 后续的所有询问直接回车搞定了,一般不设置密码,如果需要,请自行百度,Hy369 还没有使用过,没有发言权。
  • 命令执行完以后, .ssh 目录下,就会生成密钥文件,带 .pub 的就是密钥的公钥。
  • 需要多少个不同的密钥,便执行上述步骤即可。

第二步 配置 config 文件

.ssh 目录下,创建一个 config 文件。注意没有后缀。实现为不同的仓库配置不同的密钥:

配置文件样例:

# oschina
Host git.oschina.net
HostName git.oschina.net
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.oschina
User Hylin

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa.github
User Hy369

至此,配置完成,正常情况下,便可使用了。

第三步 添加公钥到网站

登录自己的 Github 或者 Oschina,公司的请咨询运维。一般在个人设置的界面,有个 SSH 的选项或者导航标签,点击进去,就可以看到添加公钥的界面。

将公钥中的字符,全部复制到文本框内,然后设置一个便于自己区分的名字,提交即可。

第四步 测试

ssh -T git@github.com

# 如果出现了这个提示,直接输入 yes 确认即可
The authenticity of host 'github.com (192.30.255.113)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)?

# 以下是成功之后的信息:
Hi Hy369! You've successfully authenticated, but GitHub does not provide shell access.

如果没有成功,试着备份或者重命名一下 .ssh 目录下的 known_hosts 文件,再次尝试。

如果还是有问题,请针对具体问题,利用搜索引擎查找一下解决方案。或者,你也可以给 Hy369 发邮件,Hy369 会为你提供力所能及的帮助。

SSH 方式下为 Git 设置多用户登录 补充说明

非特殊注明博文为 爱PHP吧(www.iphp8.com)原创内容,转载请注明原文地址:http://www.iphp8.com/?post=110

评论

发表评论:

(选填)

(选填)