github每次pull/push代码时要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码用以验证用户是否为合法用户,而ssh是一种安全的传输模式,可以代替用户的这一“输入账号密码”的行为来验证用户。
github共支持2种操作方式
-
https
可以随意克隆github上的项目,而不管是谁的;在pull/push的时候是需要验证用户名和密码的
-
ssh
克隆者必须是拥者或管理员,且需要先添加 SSH key ,否则无法克隆。在pull/push的时候不再是验证用户名和密码,而是通过验证ssh的方式来验证用户。
以下教程为在linux客户端下配置ssh连接
先准备一台可以访问internet的linux电脑
例子里使用的是centos7
使用yum install git-core命令安装git
安装完成后运行git --version
生成ssh 证书
ssh-keygen -t rsa -C "huzhongliang790209@hotmail.com”
-t参数是指定key的类型,这里指定的是rsa
-C是comment 我这里写的是github的账号
执行命令后会有几次交互
1,Enter file in which to save the key (/root/.ssh/id_rsa): 这里可以直接按回车,系统会使用默认名字生成key
私钥的名字是id_rsa,公钥的名字是id_rsa.pub
2,enter passphrase 这里也可以直接按回车,默认是无密码。如果输入密码(输入密码后会有再输入一次的验证),则下次每一次连接github 都会要求输入密码(我们使用ssh不就是为了不输入密码么?,所以直接回车)
进入/root/.ssh后,将id_rsa.pub文件传到本地后打开或者直接cat id_rsa.pub
将key的内容复制出来
现在登录到github (没有账号?当然要先注册一个咯)
进入账号的setting – SSH and GPG keys
选择new SSH key
随便输入一个名字(方便标识从哪过来的ssh请求)
key区域里将刚才复制出来的内容粘贴进去,然后点击 “add SSH key”
完成后则会出现如下的选项
完成后回到linux主机上验证ssh连接是否正常
执行
ssh -T git@github.com
Are you sure you want to continue connecting (yes/no)?这里输入yes
如果出现
You've successfully authenticated, but GitHub does not provide shell access. 则代表ssh连接已经成功
回到github上可以看到刚才添加的sshkey 变成了绿色
现在我们回到linux主机上尝试clone一个github上的repo
我自己账号下的一个repo如下
那我在linux 下应该输入
git clone git@github.com:hzl790209/game-of-life
输入命令后开始clone github的这个repo
这样linux下使用ssh连接github已经配置完成