跳转主页

一台电脑配置多个SSH KEY

·1220 字·3 分钟
Git

本文参考:( https://www.cnblogs.com/hustshu/p/15615808.html)

目的

盲目生成SSH Key时,把之前的数据搞丢了,所以就研究了一下如何生成不同的SSH Key,方便在同一台电脑上同时使用不同的托管平台。

查看并清除全局配置

如果之前有生成过SSH KEY,那么首先需要清除之前的全局配置

首先查看之前已经配置好的全局配置

git config --global --list

对应出现

filter.lfs.clean=git-lfs clean -- %f
filter.lfs.smudge=git-lfs smudge -- %f
filter.lfs.process=git-lfs filter-process
filter.lfs.required=true
user.name=username
[email protected]
}

执行命令,清除用户名及邮箱信息

git config --global --unset user.name
git config --global --unset user.email

生成新密钥对

首先去在C:\Users\Username\.ssh目录下清除之前生成的密钥文件

然后生成新的SSH密钥

ssh-keygen -t rsa -C “[email protected]

回车提示如下

注意在第二行时设置好命名,先输入id_rsa_name,再回车,这样生成的钥对通过命名避免被后续新生成的密钥覆盖

后续无需密码回车即可

Generating public/private rsa key pair.

Enter file in which to save the key (/c/Users/username/.ssh/id_rsa): id_rsa_name


Enter passphrase (empty for no passphrase):

Enter same passphrase again:

提示成功

Your identification has been saved in id_rsa_name
Your public key has been saved in id_rsa_name.pub
The key fingerprint is:
# 此处省略具体密钥对信息

添加SSH Keys

登录GitHub网站,进入Setting - SSH and GPG key,点击 New SSH key按钮 打开C:\Users\Username\.ssh目录下的id_rsa_name文件,将全部内容复制进网页保存。

添加私钥

请先进入本地git仓库文件夹,再运行命令

【之前在~/.ssh文件夹下运行,被坑了; 如果没有切换文件夹,后续在运行ssh -T [email protected]时,会报错[email protected]: Permission denied (publickey).

运行1

eval `ssh-agent -s`

先运行以上,不然windows会报错Could not open a connection to your authentication agent.

将私钥添加进本地

ssh-add ~/.ssh/id_rsa_name

提示如下为成功

Identity added: /c/Users/username/.ssh/id_rsa_name ([email protected])

密钥成功添加进本地。

可通过ssh-add -l验证,回车将返回相关信息

为本地仓库配置用户名

  • 注意切换到本地git仓库后执行命令
  • 注意输入的用户名与仓库网站上的登录用户名一致
  • 注意这里输入的邮箱与生成钥对时的邮箱一致
git config --local user.name "githubusername"
git config --local user.email "[email protected]"

管理密钥

目的是通过在本地进行相关配置,实现根据仓库的 remote 链接地址自动选择合适的私钥。

C:\Users\Username\.ssh目录下新增文件config,用VS code打开,配置一下内容

Host github
HostName [email protected]
User GitHubUsername
IdentityFile ~/.ssh/id_rsa_name

Host 仓库网站别名,可随意 Hostname 仓库网站域名 User 仓库网站用户名(请确保和用户登录名一致) IdentityFile 私钥的绝对路径(如果有多个,请注意添加进对应账号仓库的对应名称)

如果后续需要新增其他仓库网站,空一行同样格式输入

添加完毕后,检查是否连通

ssh -T [email protected]

回车,提示

Are you sure you want to continue connecting (yes/no/[fingerprint])? 

输入yes,回车,提示

You've successfully authenticated, but GitHub does not provide shell access

虽然有提示but GitHub does not provide shell access,但不影响使用git命令推送到远程仓库

我在推送时遇到了hint: Updates were rejected because the remote contains work that you do

然后用git push -f origin main强制推送远程仓库了

不要学我,老老实实先pull,再push

以上

同样的方法,可以重复使用,根据实际情况修改对应项,去连通不同的远程仓库


  1. 参考 网页 ↩︎