SSH Keys

SSH Key 可以让电脑跟 Code 服务器之间建立安全的加密链接。

如果执行下面命令,有 ssh-rsassh-dsa 开头的字符串输出,就说明电脑已经有公钥了。

  1. cat ~/.ssh/id_rsa.pub
  2. 举个例子:
  3. ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc4yRUENa8oN/VbsTJLucFH8z/v/38X5+sZAei6fX7Aty0HMQS5Tg1oLAaaX/kxf+CmxhEuuRief8PE8/yk47lzV7JImJIN9vPQkYF6ViAWlsiBBS6B88qboXpM2TgAkoodUkzKAIq0a/ygS62KF7uonOsRnLKmOE5joXu+ubSoB5/XP7n0qVfOXWyUP2o72nFE4v+7RCkf7Kyxe4Kv8jxXUIeISIn51dbMaRVM26THz192ZVcmy/6OugyvclREZo42jUrEILByyoCJKWWkliwWaL/8V8MydvWeqVOc7G8HQG6l5pOqY9sR0tbl5caCt/xTJ/NTI/V2FNgnYo/fTHb zhening.czn@alibaba-inc.com

一般我们配置github/gitlab 等时,就只需要公钥即可。

生成 ssh key

可以用下面的命令生成 ssh key:

  1. ssh-keygen -t rsa -C "your@email.com"

如果不需要密码就按 enter 跳过,它默认会生成 id_rsaid_rsa.pub 两个文件,它们也是我们默认使用的私钥跟公钥

如果想要指定生成的秘钥的文件名,可以直接在命令后指定。

  1. ssh-keygen -t rsa -C "your@email.com" foo_rsa

然后就会生成 foo_rsafoo_rsa.pub 两个文件。

多个 SSH Key 管理

有时候我们的代码托管在不同的平台,且需要针对不同平台使用不同的 ssh key,这个时候就需要使用多个 ssh key 了。

大致的步骤如下:

  1. 生成 ssh key;
  2. 在远程仓库设置添加公钥;
  3. ssh-add key;
  4. 配置 ./ssh/config;
  5. 在 git 仓库下配置 email;

1针对阿里云 生成 SSHkey :

  1. ssh-keygen -t rsa -C "452373368@qq.com" -f aliyun_rsa

执行后会生成 aliyun_rsa 和 aliyun_rsa.pub 两个文件

2执行 cat aliyun_rsa.pub ,将内容 copay 到远程仓库的 ssh-key 管理。

3执行 ssh-add aliyun_rsa ,会输出 Identity added: aliyun_rsa (452373368@qq.com) ,表示已经添加,这一步一定需要,不然会找不到。

4 配置.ssh/config

在.ssh 目录下新建一个文件 config,然后输入内容:

  1. Host github.com
  2. HostName github.com
  3. User zhening.czn@alibaba-inc.com
  4. PreferredAuthentications publickey
  5. IdentityFile ~/.ssh/id_rsa
  6. Host code.aliyun.com
  7. HostName code.aliyun.com
  8. User 452373368@qq.com
  9. PreferredAuthentications publickey
  10. IdentityFile ~/.ssh/aliyun_rsa

这样 git 就会根据配置,在pull/push 等的时候使用对应的公钥。

5 配置 git 项目的 email

在做完上面的步骤后,还需要在具体的工程下配置 email,否则还是会使用默认的公钥,
git config user.email=452373368@qq.com ,这样就跟之前的 ssh-key 建立了链接。

IdentityFile 需要指定绝对路径。