[toc]
查看
ssh-add -l
3072 SHA256:HpFoxdG1UO2U+gX3r45Z9SJrBjSZ/SlT3wH+BDCrQz0 youremail@example.com (RSA)
3072 SHA256:VlXQsANIE7eH/Gttk2vAsvQ6bMzZTvWSgMdu9U3ynog youremail@example.com(RSA)
生成不同名称的ssh密钥
# 其中gitlab,github, 和name 我主要用来区别是那个平台,自己可随意只要你能区分就行
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab.name -C "youremail@example.com"
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github.name -C "youremail@example.com"
输入过程中可以不输入密码, 直接回车,懒人方式
会在 ~/.ssh/
, 目录下生成两个文件, 一个是 id_rsa.gitlab.name
和 id_rsa.gitlab.name.pub
文件,
新建ssh配置文件
touch ~/.ssh/config
config的内容如下:
#github配置
# 别名 , 如果是你又多个github 账号, 需要配置多个sshkey 就用这个来区分的
# 多个github 账号 : Host username.github.com
Host github.com
# 端口, 默认是22可以不写,如果自己搭建的服务器监听的是其他端口这个参数必须声明
Port 22
# IP地址或者域名
Hostname github.com
# 下面可以直接写 `git` 当然你也可以写指定用户
user user@github.com
# 对应的私钥路径
IdentityFile ~/.ssh/id_rsa.github
#gitlab配置
# 别名 , 如果是你又多个github 账号, 需要配置多个sshkey 就用这个来区分的
# 多个github 账号 : Host username.github.com
Host gitlab
# 端口, 默认是22可以不写,如果自己搭建的服务器监听的是其他端口这个参数必须声明
Port 22
# IP地址或者域名
Hostname gitlab.com
# 下面可以直接写 `git` 当然你也可以写指定用户
user user@gitlab.com
# 对应的私钥路径
IdentityFile ~/.ssh/id_rsa.gitlab
添加私钥
ssh-add ~/.ssh/id_rsa.gitlab
ssh-add ~/.ssh/id_rsa.github
配置公钥
# ~/.ssh/ 下面的.pub 文件全部都是公钥,需要上传到对应的平台, 流程略, 参考平台地址
cat ~/.ssh/xx.pub
将输出的结果复制
设置远程库的地址
git remote add origin git@github:test/test.git
测试
ssh -T git@github.com (域名)
ssh -T git@config文件中的别名
ssh -T git@ip地址
# 终端输出
Hi Rosalindjuan! You've successfully authenticated, but GitHub does not provide shell access.
- 如果终端有新添加的ssh-key 也需要在
~/.ssh/config
配置
分别输入对应密钥的密码,测试成功。
记得在设置远程仓库地址的时候,修改对应的Host名称。建议把常用的git远程仓库设置为默认的密钥,生成默认密钥的命令如下:
只要Host不在config文件中,都是读取默认密钥。
ssh-keygen -t rsa -C "youremail@example.com"
删除
ssh-add -D
一个托管平台多个ssh key
配置
# 用户1
Host username1.github.com
Hostname github.com
user git
IdentityFile ~/.ssh/id_rsa.username1.github
# 用户2
Host username2.github.com
Hostname github.com
user git
IdentityFile ~/.ssh/id_rsa.username2.github
使用
注意下面的username1 和username2
用户1
# 举个 🌰
git clone git@username1.github.com:username/example.git
git remote set-url origin git@username1.github.com/username/example.git
用户2
# 举个 🌰
git clone git@username2.github.com:username/example.git
git remote set-url origin git@username2.github.com/username/example.git
测试
ssh-add -T git@username1.github.com
ssh-add -T git@username2.github.com