github之添加SSH key

   Git是目前世界上最先进的分布式版本控制系统(没有之一)。github是一个神奇的网站,这个网站可以提供git仓库托管服务,如果注册了github账号,就可以获得免费的git远程仓库。由于本地git仓库和github仓库之间的传输是通过SSH加密的,所以要想将github的远程仓库与本地git仓库关联起来,你需要在github网站上添加你本地计算机的SSH key。

   在github账号中添加SSH key本身并不复杂,廖雪峰老师的git教程中远程仓库 一节中就给出了图文并茂的详细说明,github自身也提供了一份帮助说明文档,这篇博客的主要内容,就是对后者的翻译。

Disclaimer

   在翻译的过程中,发现似乎都是以Git Bash这个工具作为说明对象的,但是在重要的地方也做了特别说明,我自己在Linux下实验过了,觉得应该还是不影响实际操作的。文中以括号括起来的说明文字,都是我自己加的,对我来说是需要注意的地方,也希望对你们有所帮助吧。下面,就开始正文吧!



   SSH key是一种识别可信任用户的方式,此方式下无需密码认证。以下步骤能够帮助你生成一个SSH key并将公钥添加到你的github账号。

   我们建议你定期检查你的SSH key列表,并删除近段时间内没有使用的key。

小贴士:如果你在Windows上安装了github,你可以直接克隆远程仓库,无需处理SSH key。在Windows下,运行git命令的首选工具是Git Bash,Git Bash同样不需要处理SSH key。

第一步:检查SSH key

   首先,检查你的计算机上现有的SSH key。打开Git Bash并输入:
$ ls -al ~/.ssh
(注:在linux下就直接通过终端输入以上命令,其中~一般代表/root)

   检查目录中的文件列表,看是否已经有了共有的SSH key。默认情况下,公钥的文件名会是以下所示的某一个:

  • id_dsa.pub
  • id_ecdsa.pub
  • id_ed25519.pub
  • id_rsa.pub

(注:如果采用rsa加密的话,公钥名会是id_rsa.pub)


第二步:生成一个新的SSH key

  1. 不要关闭Git Bash,将下面的命令复制粘贴到里面去,注意把邮箱地址换成你在github上注册时用的邮箱地址。
    $ ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    Generating public/private rsa key pair

  2. 强烈建议使用默认设置,所以当提示你"Enter a file in which to save the key",直接回车。
    Enter file in which to save the key (/users/you/.ssh/id_rsa): [Press enter]

  3. 接下来会要求你输入密码
    Enter passphrase (empty for no passphrase): [Type a passphrase]
    Enter same passphrase again: [Type passphrase again]

    小贴士:强烈建议使用一个好的、安全的密码。更多详情,见“Working whit SSH key passphrase”
    (注:廖雪峰老师说,由于这个key也不是用于军事目的,所以也无需设置密码。所以,输入ssh-keygen命令后,一路回车即可,我就是这么做的。)

  4. 输入密码后,你会得到SSH key的指纹或id。就像下面这样的:
    Your identification has been saved in /users/you/.ssh/id_rsa.
    Your public key has been saved in /users/you/.ssh/id_rsa.pub.
    The key fingerprint is :
    01:0f:f4:3b:ca:85:d6:17:a1:7d:f0:68:9d:f0:a2:db your_email@example.com


第三步:将你的key添加到ssh-agent中

   为了使用之前生成的SSH key,需要配置ssh-agent程序:

   如果你在Windows上安装了github,你可以直接克隆远程仓库,无需处理SSH key。在Windows下,运行git命令的首选工具是Git Bash,Git Bash同样不需要处理SSH key。

  1. 确认ssh-agent已经启用

    • 如果你使用的是Git Bash,用下面的命令启动ssh-agent:
      ssh-agent -s
      Agent pid 59566

    • 如果你用的是其他终端,例如msysgit,用下面的命令启动ssh-agent:
      eval $(ssh-agent -s)
      Agent pid 59566

  2. 将生成的SSH key添加到ssh-agent:
    ssh-add ~/.ssh/id_rsa


第四步: 将SSH key添加到github账号

   使用SSH key之前配置一下github账号:

   将SSH key复制到剪贴板中。注意将SSH key的文件名换成你自己的key的名字:
clip < ~/.ssh/id_rsa.pub

警告:切记要精确复制key文件的内容,不能添加空行或空格符号

(注:这一复制的方法好像只针对Windows平台的,我在Linux下面,是通过gedit打开id_rsa.pub,然后Ctrl+a、Ctrl+c完成的复制。)

   将复制好的内容添加到github中:

  1. 在github任一页面的右上角点击你自己的头像,然后点击Settings
    用户设置

  2. 在用户设置的侧边栏,点击SSH keys
    SSH keys

  3. 点击Add SSH key
    Add SSH key

  4. Title输入框中,输入对新添加的key的描述性标签。例如,如果你在用一台个人Mac,你可以称这个key为”Personal MacBook Air”。

  5. 将SSH key的内容粘贴到Key输入框中。
    粘贴Key的内容

  6. 点击Add Key
    Add Key

  7. 确认你的github密码。


第五步

   为了确保一切操作正确,现在尝试建立同github的SSH连接。连接过程中,会要求你输入密码来认证操作,这个密码就是在生成SSH key的过程中创建的密码。(注:如果你当时没有创建密码,现在也不用输入密码了。)

  1. 打开Git Bash,输入以下命令:
    $ ssh -T git@github.com

  2. 你可能会看到这条警告:
    The authenticity of host 'github.com (207.97.227.239)' can't be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
    验证警告消息中的指纹与你在下面这条消息中看到的指纹相匹配,然后输入yes:
    Hi username! You've successfully authenticated, but GitHub does not
    provide shell access.

  3. 如果上消息中的username是你的,那么你就成功设置了你的SSH key!

   如果你收到“access denied”,你可以参考这些解决办法

   如果你从HTTPS切换到SSH,你需要更新远程仓库的URL。详情请见Changing a remote’s URL


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值