一.配置单个 ssh

单个 ssh key 是指一台 git 服务器只有一个 git 账号。也就是说,如果你不仅在 github 有账号,在 coding 也有账号,甚至团队内部自己搭建了私有的 git 服务器等,这些服务器都可以公用同一个 ssh key 的,绝对没有必要创建多个 ssh key。你只需要将相同的 ssh 公钥添加到相应的服务器的账号设置里即可。如果自己不能添加,可以将公钥发给服务器管理人员,让他帮忙添加也行。

ssh key 不仅仅用于 git 服务器,它还支持远程加密登录和相应的操作。比如,登录云服务器,添加 ssh key 后,可以免密登录
免密登陆的 ssh key 存放在文件.ssh/authorized_keys里,如果.ssh 目录下没有 authorized_keys 文件可以自己创建该文件,多个授权的 ssh key 换行即可

  • 生成 SSH key(默认)除了秘钥文件之外,known_hosts文件是后续自动生产的,config文件(用于多个 ssh)是后面的步骤中手动生产的
  • 三次回车即可生成 ssh key, 这里的邮箱最好填和刚才一样的。然后将公钥分别配置到 github,coding,Gitee 就可以了。(可以参照后面的配置多个 ssh 时,coding,github,gittee 的 ssh key 的配置方法)
//生公钥私钥
ssh-keygen -t rsa -C "1181012791@qq.com"

//复制公钥(win10上默认的 公钥文件名称是 id_rsa.pub)
cd ~/.ssh
cat id_rsa.pub

二.配置多个 ssh

1.配置 github.com 的 ssh

1>生成 github.com 的私钥公钥

建 github 对应的 sshkey,命名为 id_rsa_github,密码 *123456 **(自行设置)

ssh-keygen -t rsa -C 1181012791@qq.com

image.png

2>查看复制 id_rsa.github.pub 公钥

image.png

3>github 上传公钥

公钥是以 .pub 结尾的文件,私钥在本地。GitHub 添加 SSH key 的方式如下图所示,将公钥复制到 value,name 自己随意填就行。
image.png

4>测试

ssh -T git@github.com

image.png
验证结果消息是否包含您的用户名。如果收到“权限被拒绝”消息,请参阅“错误:权限被拒绝(公钥)”

2.配置 gitee.com 的 ssh

1>生成 gitee.com 的私钥公钥

创建 gitee 对应的 sshkey,命名为id_rsa_gitee,密码 *123456 **(自行设置)。
(邮箱地址可以相同或者不同,本文相同)

ssh-keygen -t rsa -C 1181012791@qq.com

image.png

image.png

三.查看、复制 key

1.查看~/.ssh/目录下的所有的文件

//切换到 ~/.ssh 目录
cd ~/.shh

//查看
ll
ls

image.png

2.文本编辑工具查看

切换到 ~/.shh 文件夹,选择使用文本编辑器 打开,id_rsa_pub(上面自定义的文件名称,默认为 id_rsa_pub)文件,全部复制。

3.命令行查看 vim/cat

//切换到~/.ssh目录
cd ~/.ssh

//打开id_rsa.pub文件,复制
cat id_rsa.pub

4. 在.ssh 目录创建 config.text 文本文件并完成相关配置(最核心的地方)

# 配置github.com
Host github.com              		 #域名地址的别名(尽量配置一样)
    HostName git@github.com					 #真实的域名地址
    User 1181012791@qq.com   						 #配置使用用户名
    IdentityFile ~/.ssh/id_rsa_github  #id_rsa的地址
    PreferredAuthentications publickey  # publickey,password publickey,keyboard-interactive

# 配置gitee.com
Host gitee.com              		 #域名地址的别名(尽量配置一样)
    HostName gitee.com					 #真实的域名地址
    User username2   						 #配置使用用户名
    IdentityFile ~/.ssh/id_rsa_gitee  #id_rsa的地址
    PreferredAuthentications publickey

四.删除原有 ssh 公钥方法

ssh 登录过的服务器的 RSA 公钥保存在.ssh/known_hosts 中。当下次访问相同计算机时,SSH 会核对公钥。如果公钥不同,OpenSSH 会发出警告。

1.文本编辑工具或 vi/vim 编辑删除

  • 在 win10 的用户目录(画重点),进入 .ssh 目录(win10 默认目录),可以找到 known_hosts 文件。
  • 用文本编辑工具或 vi/vim 打开 known_hosts 文件中后,找到对应的 IP 所在行的公钥整行删除。
cd ~/.ssh

2.命令行清除

ssh-keygen -f "~/.ssh/known_hosts" -R 192.168.1.254

五.切换 ssh 和 http 协议:

1.查看当前 remote

git remote -v

2.切换到 http:

git remote set-url https://github.com/username/repository.git

3.切换到 ssh:

git remote set-url git@github.com:username/repository.git

六.测试连接

$ ssh -T git@github.com
Hi yourname! You've successfully authenticated, but GitHub does not provide shell access.

$ ssh -T git@git.coding.net
Hi yourname! You've successfully authenticated, but GITEE.COM does not provide shell access.

$ ssh -T git@gitee.com
Hi yourname! You've successfully authenticated, but GITEE.COM does not provide shell access.

Q.E.D.