Git 的 ssh key


生成 ssh key

ssh-keygen -t rsa -C "your name"

这样默认会在本地的 ~/.ssh 目录下生成 id_rsa,id_rsa.pub 两个文件。
id_rsa 是私钥,id_rsa.pub 是公钥。

使用 ssh key
ssh key 方式登录远程服务器
我们需要把 id_rsa.pub 拷贝到远程服务器的 ~/.ssh 下面,并改名为 authorized_keys,这样我们就可以使用 key 的方式登录了。

ssh key 方式使用 git clone 代码
如果我们使用的是 github,只需要把 id_rsa.pub 的内容拷贝出来,在 github 的 setting 里面添加即可, 我们就可以使用 ssh 方式 clone 代码了。

// 请修改为你自己的git地址
git clone git@github.70data/test.git

多站点使用不同的 ssh key
生成一个 github 用的 ssh key

ssh-keygen -t rsa -C "youremail@your.com” -f ~/.ssh/github-rsa

在 ~/.ssh/ 目录会生成 github-rsa 和 github-rsa.pub 私钥和公钥。我们将 github-rsa.pub 中的内容粘帖到
github 服务器的配置中。

生成一个公司用的 ssh key

ssh-keygen -t rsa -C "youremail@yourcompany.com” -f ~/.ssh/id-rsa

在 ~/.ssh/ 目录会生成 id-rsa 和 id-rsa.pub 私钥和公钥。我们将 id-rsa.pub 中的内容粘帖到公司 gitlab 服务器的配置中。

添加私钥

ssh-add ~/.ssh/github_rsa
ssh-add ~/.ssh/id_rsa

如果执行 ssh-add 时提示"Could not open a connection to your authentication agent",可以现执行命令:

ssh-agent bash

然后再运行 ssh-add 命令。

# 可以通过 ssh-add -l 来确私钥列表
ssh-add -l
# 可以通过 ssh-add -D 来清空私钥列表
ssh-add -D

我们在 .ssh 下创建 config 文件。
输入:

# gitlab
Host gitlab.com
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
# github
Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_rsa

这样访问 company.com 就会使用 user1,访问 github.com 就会使用user2。

同一站点使用不同的 ssh key
我们有时候需要在同一站点使用不同的 ssh key,比如使用 pages 服务,想要创建两个站点,但是 pages 上不允许不同的用户使用同一个 ssh key,我们在 config 文件里做相应的修改。

Host git-site1
  HostName github.com
  User git
  IdentityFile ~/.ssh/user1
Host git-site2
  HostName github.com
  User git
  IdentityFile ~/.ssh/user2

然后我们更改 git 仓库的远程地址

# site1
$ git remote remove origin 
$ git remote add origin git@git-site1:user1/user1.git
# site2
$ git remote remove origin 
$ git remote add origin git@git-site2:user2/user2.git

关键是把 github.com 改为 git-site1 和 git-site2。

测试 ssh key 是否配置成功

ssh -T git@github.com

成功的话会显示:

Welcome to github, username!
分享:

评论