git clone ssh和https

git clone ssh和https_第1张图片

1.共同点

都可以使用git clone地址。将项目下载到本地

2.不同点

  • https:git clone和git pull无限制,git push需要提供credential,一般是你的github(如果remote repository 托管在github上的话)的用户名和密码
  • ssh:因为需要在托管平台设置ssh public key,所以要求你必须是该repository的拥有者或者管理员。git push时,无需输入用户名,如果生成ssh key的时候设置了密码,则需要输入密码,否则在
  • git中使用SSH Key的步骤:
    检查电脑是否存在SSH Key:$ cd ~/.ssh$ ls
    如果存在id_rsa.pub 或 id_dsa.pub 文件,说明文件以及存在,跳过创建SSH Key步骤。
    创建SSH Key
    将公共的SSH 放到远程仓库上不需要

为Github账户设置SSH key


什么是SSH key
一直使用SSH连接服务器,但是对它的原理却不太了解。这次设置Octopress的时候,需要使用SSH 方式连接Github, 正好对SSH的工作方式做了下了解。(好像Github推荐使用HTTPS的方式访问repo, 以前Github受到过SSH密匙攻击,之后升级了SSH key的安全措施,https方式视乎更方便安全,不过Octopress的设置文档中,我并没有找到怎么使用HTTPS连接Github)  

简单来说,SSH提供了两种级别的安全验证:

  • 第一种级别是基于密码的安全验证,知道账号和密码,就可以登陆到远程主机。Team的开发工作中,就是使用这种方式登陆编译服务器,或者开发机器。因为是在内网中,这种级别的安全验证已经足够了。
  • 第二种级别是基于Public-key cryptography (公开密匙加密)机制的安全验证,原理如下图所示:
  • 其优点在于无需共享的通用密钥,解密的私钥不发往任何用户。即使公钥在网上被截获,如果没有与其匹配的私钥,也无法解密,所截获的公钥是没有任何用处的。

产生SSH key
 

  • 使用ssh-keygen产生新的key 

$ ssh-keygen -t rsa -C "[email protected]"
# Creates a new ssh key using the provided email
Generating public/private rsa key pair.
Enter file in which to save the key (/home/you/.ssh/id_rsa);

  • 使用默认的文件名直接enter, 按提示输入密码(如果不提供密码,SSH将无密码连接,如果private key泄露可能会有安全问题)

Enter passphrase (empty for no passphrase): [Type a passphrase]
Enter same passphrase again: [Type passphrase again]

  • 密匙产生成功

 Your identification has been saved in /home/you/.ssh/id_rsa.
Your public key has been saved in /home/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 [email protected]

上传public key到Github账户

  • 登录github
  • 点击右上方的Accounting settings图标
  • 选择 SSH key
  • 点击 Add SSH key

在出现的界面中填写SSH key的名称,填一个你自己喜欢的名称即可,然后将上面拷贝的~/.ssh/id_rsa.pub文件内容粘帖到key一栏,在点击“add key”按钮就可以了。
添加过程github会提示你输入一次你的github密码

设置SSH使用HTTPS的403端口

在局域网中SSH的22端口可能会被防火墙屏蔽,可以设置SSH使用HTTPS的403端口。测试HTTPS端口是否可用

  • $ ssh -T -p 443 [email protected]
    Hi username! You've successfully authenticated, but GitHub does not
    provide shell access.

编辑SSH配置文件 ~/.ssh/config 如下:

  • Host github.com
  • Hostname ssh.github.com
  • Port 443 

测试是否配置成功

  • $ ssh -T [email protected]
    Hi username! You've successfully authenticated, but GitHub does not
    provide shell access

你可能感兴趣的:(git)