SSH Keys
SSH Key 可以让电脑跟 Code 服务器之间建立安全的加密链接。
如果执行下面命令,有 ssh-rsa
或 ssh-dsa
开头的字符串输出,就说明电脑已经有公钥了。
cat ~/.ssh/id_rsa.pub
举个例子:
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:
ssh-keygen -t rsa -C "your@email.com"
如果不需要密码就按 enter 跳过,它默认会生成 id_rsa
跟 id_rsa.pub
两个文件,它们也是我们默认使用的私钥跟公钥。
如果想要指定生成的秘钥的文件名,可以直接在命令后指定。
ssh-keygen -t rsa -C "your@email.com" foo_rsa
然后就会生成 foo_rsa
和 foo_rsa.pub
两个文件。
多个 SSH Key 管理
有时候我们的代码托管在不同的平台,且需要针对不同平台使用不同的 ssh key,这个时候就需要使用多个 ssh key 了。
大致的步骤如下:
- 生成 ssh key;
- 在远程仓库设置添加公钥;
- ssh-add key;
- 配置 ./ssh/config;
- 在 git 仓库下配置 email;
1针对阿里云 生成 SSHkey :
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,然后输入内容:
Host github.com
HostName github.com
User zhening.czn@alibaba-inc.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
Host code.aliyun.com
HostName code.aliyun.com
User 452373368@qq.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/aliyun_rsa
这样 git 就会根据配置,在pull/push 等的时候使用对应的公钥。
5 配置 git 项目的 email
在做完上面的步骤后,还需要在具体的工程下配置 email,否则还是会使用默认的公钥,git config user.email=452373368@qq.com
,这样就跟之前的 ssh-key 建立了链接。
IdentityFile 需要指定绝对路径。