Git使用ssh密钥

https协议:https://git.heroku.com/meango.git
git协议:[email protected]:arvinxiang/meango.git

一般情况下,我们使用git协议,然后使用ssh密钥,可以避免每次pull, push手输密码。

使用ssh密钥的三个步骤:
一、生成密钥对;
二、添加公钥到远端(Github、heroku等);
三、代码库使用git协议。

生成密钥对

大多数 Git 服务器都会选择使用 SSH 公钥来进行授权。系统中的每个用户都必须提供一个公钥用于授权,没有的话就要生成一个。生成公钥的过程在所有操作系统上都差不多。首先先确认一下是否已经有一个公钥了。SSH 公钥默认储存在账户的主目录下的 ~/.ssh 目录。进去看看:

$ cd ~/.ssh 
$ ls
id_dsa    id_dsa.pub  

关键是看有没有用 xxx 和 xxx.pub 来命名的一对文件,有.pub后缀的文件就是公钥,对应的无后缀文件则是密钥。假如没有这些文件,或者干脆连 .ssh 目录都没有,可以用 ssh-keygen 来创建。该程序在 Linux/Mac 系统上由 SSH 包提供,而在 Windows 上则包含在 MSysGit 包里:

$ 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就行。然后,会提示你输入密码(一般选择不输):

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

Enter后你得密钥对就生成好了。你生成的公钥大概是这样的:

$ cat ~/.ssh/id_rsa.pub  
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCx2FnQ1Y8WbzKTra3wRfILrBszg54Q3atXpr+WYy/wJ15eIl5okU2pO9rwmMOiTReZOh8b/f3wj+TpyUZyDycfBimgSPooQmiJ7PZ92fG7wV9fA1QE9udlZ3KGauCqpTqXI7Vc1zFSOJSKbzwZi0CBRk51yl5J2I3GkuPTBdcXU78Y9h7r+4wgRTh2inp0ceo4GxsUM/NDVfS8upptGsHzFIPel6j7SaQHQKDGeF2Y4sMMjgdE7dIB6blW8tf58Hz7r2id96+buyAq/6W/Fto+E/JLlIorjC0asBSfjDeHKn12fxqzEZwYK2r2xe4o8nKJgS4YHdeGmcB2pcvWqX [email protected]  

最后面的[email protected]一般会被远端识别为别名,是可以修改的。

添加公钥到远端

无论是Github、heroku还是DigitalOcean,基本都可以在 Account Settings 里面找到 Add SSH key,只需要粘贴你的公钥保存就行了。

你可以验证下这个key是不是正常工作:

$ ssh -T [email protected]
# Attempts to ssh to github

代码库使用git协议

可以用git remote -v 查看你当前的remote url

$ Git remote -v

origin https://github.com/someaccount/someproject.git (fetch)  
origin https://github.com/someaccount/someproject.git (push)  

可以看到上面是使用https协议的。

你可以使用 git remote set-url 来更改:

git remote set-url origin [email protected]:someaccount/someproject.git  

本文完。

Arvin Xiang

Read more posts by this author.

Subscribe to Arvin Xiang

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!