Linux下通过ssh连接github_Linux

github每次pull/push代码时要求推送代码的用户是合法的,所以每次推送时候都要输入账号密码用以验证用户是否为合法用户,而ssh是一种安全的传输模式,可以代替用户的这一“输入账号密码”的行为来验证用户。

github共支持2种操作方式

  1. https

    可以随意克隆github上的项目,而不管是谁的;在pull/push的时候是需要验证用户名和密码的

  2. ssh

    克隆者必须是拥者或管理员,且需要先添加 SSH key ,否则无法克隆。在pull/push的时候不再是验证用户名和密码,而是通过验证ssh的方式来验证用户。

以下教程为在linux客户端下配置ssh连接

先准备一台可以访问internet的linux电脑

Linux下通过ssh连接github_assets_02

例子里使用的是centos7

使用yum install git-core命令安装git

Linux下通过ssh连接github_assets_03

安装完成后运行git --version

Linux下通过ssh连接github_Linux_04

生成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

Linux下通过ssh连接github_assets_05

2,enter passphrase 这里也可以直接按回车,默认是无密码。如果输入密码(输入密码后会有再输入一次的验证),则下次每一次连接github 都会要求输入密码(我们使用ssh不就是为了不输入密码么?,所以直接回车)

Linux下通过ssh连接github_Linux_06

进入/root/.ssh后,将id_rsa.pub文件传到本地后打开或者直接cat id_rsa.pub

Linux下通过ssh连接github_图片搜索_07

将key的内容复制出来

现在登录到github (没有账号?当然要先注册一个咯)

进入账号的setting – SSH and GPG keys

选择new SSH key

Linux下通过ssh连接github_Linux_08

随便输入一个名字(方便标识从哪过来的ssh请求)

key区域里将刚才复制出来的内容粘贴进去,然后点击 “add SSH key”

Linux下通过ssh连接github_图片搜索_09 

完成后则会出现如下的选项

Linux下通过ssh连接github_Linux_10

完成后回到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连接已经成功

Linux下通过ssh连接github_assets_11

回到github上可以看到刚才添加的sshkey 变成了绿色

Linux下通过ssh连接github_assets_12

现在我们回到linux主机上尝试clone一个github上的repo

我自己账号下的一个repo如下

Linux下通过ssh连接github_assets_13

那我在linux 下应该输入

git clone git@github.com:hzl790209/game-of-life

输入命令后开始clone github的这个repo

Linux下通过ssh连接github_assets_14

这样linux下使用ssh连接github已经配置完成