Mac下Github的SSH公钥生成记录

前言:

自己作死下载了多个破解软件,不知道那个可能程序有问题,导致了电脑重启后无法开机,苦逼的只能重装系统,所以之前的所有配置都需要重新弄。所以破解软件请谨慎安装

Git安装

直接下载安装 Xcode,高版本Xcode已经默认集成了Git 。

生成SSH key

SSH key提供了一种与GitHub通信的方式,通过这种方式,能够在不输入密码的情况下,将GitHub作为自己的remote端服务器,可以实现本地 Git 仓库和 GitHub 仓库之间的数据传输,方便进行版本控制。

大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。

步骤:

  • 首先先确认一下是否已经有一个公钥了。SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:
$ cd ~/.ssh
$ ls
 id_dsa       known_hosts
 id_dsa.pub     config   
  • 关键是看有没有用 something 和 something.pub 来命名的一对文件,这个 something 通常就是 id_dsa 或 id_rsa。有 .pub 后缀的文件就是公钥,另一个文件则是密钥。如果已经有了,可直接跳到打开id_rsa.pub,然后copy到GitHub。如果没有,打开终端(Shell) ,创建 SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/schacon/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/schacon/.ssh/id_rsa.
Your public key has been saved in /Users/schacon/.ssh/id_rsa.pub.
The key fingerprint is:
43:c5:5b:5f:b1:f1:50:43:ad:20:a6:92:6a:1f:9a:3a schacon@agadorlaptop.local

⚠️注意它先要求你确认保存公钥的位置(.ssh/id_rsa),然后它会让你重复一个密码两次,如果不想在使用公钥的时候输入密码,可以留空或直接一路回车确定下就安装好了。查看是否成功:

$ cd ~/.ssh
$ ls
id_rsa
id_rsa.pub
  • 打开 id_rsa.pub文件,里面就有需要的ssh key。
    在终端输入命令打开id_rsa.pub,然后copy。
vim ~/.ssh/id_rsa.pub

$ cat ~/.ssh/id_rsa.pub
拷贝公钥

另注:所有做过这一步的用户都得把它们的公钥给你或者 Git 服务器的管理员(假设 SSH 服务被设定为使用公钥机制)。他们只需要复制 .pub 文件的内容然后发邮件给管理员。

将SSH Key添加到GitHub中

登陆 GitHub,打开“SSH and GPG Keys”页面:


将SSH Key添加到GitHub中

最后测试github是否连接成功

$ssh -T git@github.com
如果显示:
Are you sure you want to continue connecting (yes/no)?  ##输入yes##
接下来如果正常的话,会出现如下提示:
Hi ZyjEugene! You've successfully authenticated, but GitHub does not
provide shell access. 
如果出现如下提示,则说明有权限问题:
Permission denied (publickey)....
如果有权限问题的情况下,你对项目执行push操作的时候,会得到如下提示:
Warning: Permanently added the RSA host key for IP address '192.30.252.129' 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.

权限问题:

原因:生成了多套git ssh密钥,并且都Github和客户端连接。通常一台电脑生成一个ssh不会有这个问题,当一台电脑生成多个ssh的时候,就可能遇到这个问题。
解决步骤如下
1、查看系统ssh-key代理, 执行如下命令

$ ssh-add -l

以上命令如果输出 The agent has no identities. 则表示没有代理。如果系统有代理,可以执行下面的命令清除代理:

$ ssh-add -D

2、然后将你新创建的ssh添加代理,执行命令如下:

$ ssh-add ~/.ssh/id_rsa 

注:id_rsa你的公私钥名称

3、你会得到如下提示:

2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/Eugene/.ssh/id_rsa (RSA)

4、测试 ssh

ssh -T git@github.com

你若得到如下提示,表示这个ssh公钥已经获得了权限

Hi ZyjEugene! You've successfully authenticated, but github does not provide shell access.

问题到此解决。


结束

鸣谢:
Pro Git 简体中文版
廖雪峰Git教程

链接与资源:
猴子都能懂的Git教程
Git - 简明指南

最后欢迎留言指正,谢谢🙏!

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 106,658评论 12 127
  • 今天第一天开始上班,没有任务,于是开始学习Git这一程序猿必须掌握之技能,希望今天的积累过后,对与Git或者...
    CoderTung阅读 7,490评论 2 97
  • Git的使用 首先登录https://git.oschina.net,如没有账号进行注册. Git简单介绍 Git...
    Sunney阅读 373评论 0 2
  • 一、检查SSH key是否存在 在终端输入: ls -al ~/.ssh 如果没有,终端显示如下: No such...
    JackieWillen阅读 634评论 0 0
  • ssh公钥登录 一般在管理远程主机时,都用ssh登录,ssh user@host,但是这样每次会使用密码。 使用s...
    沉默寡言若有所思阅读 8,634评论 0 5