一台电脑配置多个SSH KEY
本文参考:( 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
以上
同样的方法,可以重复使用,根据实际情况修改对应项,去连通不同的远程仓库