Git配置多个公钥,对应不同的代码库,解决遇到的各种问题

您所在的位置:网站首页 git用户名和邮箱的作用一样吗 Git配置多个公钥,对应不同的代码库,解决遇到的各种问题

Git配置多个公钥,对应不同的代码库,解决遇到的各种问题

2024-07-01 16:37| 来源: 网络整理| 查看: 265

进入到~/.ssh目录下

这时候看到4个文件,分别为id_rsa、id_rsa_pub、gs_rsa、gs_rsa_pub,后面的操作是将id_rsa_pub、gs_rsa_pub的密钥添加到对应的代码库上,比如github,gitlab等等。这个自己找一下

带有pub后缀的是公钥,没有带的是私钥。

使用ssh-add添加私钥

因为Git默认使用id_rsa,我们需要将密钥添加进去,同时配置config,作用是告知Git,让Git根据不同的域名选择不同的私钥

# 右键打开Git Base Here ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/gs_rsa # 如果提示:Could not open a connection to your authentication agent,则先执行这个命令 ssh-agent bash

查看是否添加成功

ssh-add -l # 如果成功,会打印出SHA256:你的私钥,一串加密字符串 rsa的地址

创建config文件

# 创建命令 touch ~/.ssh/config

config文件配置的信息

# 说明: # 注释 # Host 为域名别名 # Hostname 真实地址 # User 用户名 # IdentityFile rsa的地址 # PreferredAuthentications 认证方式(publickey--公钥的方式) # 账号1-github HOST github.com hostname github.com User xiaoshishu IdentityFile C:\Users\Administrator\.ssh\id_rsa PreferredAuthentications publickey # 账号2-公司的gitlan私服 HOST gitlab.gs.com hostname gitlab.gs.com # 公司git项目的地址,ip或者是域名 User gs_userName IdentityFile C:\Users\Administrator\.ssh\gs_rsa PreferredAuthentications publickey

验证是否生效

ssh -T [email protected] ssh -T [email protected] # 如果返回You've successfully authenticated中的,则表示成功连接。

注意!

使用ssh-agent bash这个命令,只是定义一个临时回话,将你的私钥添加到Git的ssh-key中,而config配置文件的作用,是告知Git说你要根据域名去找对应的私钥,要先把私钥添加到Git的ssh-key中,要先有因,后有果。

所以这里就存在一个问题,你必须要在当前这个窗口操作,不能重新开窗口,因为临时设置,新开窗口就无效了。而Git会默认取id_rsa,所以哪怕你设置了config也无效。

楼主照着网上帖子设置,结果一旦新开窗口拉取项目,就提示要密码

# 错误信息,不必理会 [email protected]’s password: Permission denied, please try again

创建.bashrc文件,右键Git Base Here之后,会自动加入ssh-key到Git中

# 创建./bashrc,创建.profile 也是可以的。默认会读取这两个。 touch ~/.bashrc

.bashrc文件配置的信息

# Note: ~/.ssh/environment should not be used, as it # already has a different purpose in SSH. env=~/.ssh/agent.env # Note: Don't bother checking SSH_AGENT_PID. It's not used # by SSH itself, and it might even be incorrect # (for example, when using agent-forwarding over SSH). agent_is_running() { if [ "$SSH_AUTH_SOCK" ]; then # ssh-add returns: # 0 = agent running, has keys # 1 = agent running, no keys # 2 = agent not running ssh-add -l >/dev/null 2>&1 || [ $? -eq 1 ] else false fi } agent_has_keys() { ssh-add -l >/dev/null 2>&1 } agent_load_env() { . "$env" >/dev/null } agent_start() { (umask 077; ssh-agent >"$env") . "$env" >/dev/null } if ! agent_is_running; then agent_load_env fi # if your keys are not stored in ~/.ssh/id_rsa or ~/.ssh/id_dsa, you'll need # to paste the proper path after ssh-add if ! agent_is_running; then agent_start ## 你需要更改的就这两个地方 ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/gs_rsa elif ! agent_has_keys; then ssh-add ~/.ssh/id_rsa ssh-add ~/.ssh/gs_rsa fi unset env

这个不是放在.ssh文件夹下面,而是放在C:\Users\Administrator 这个文件夹下面。

之后重新启动,直接右键git Base Here,输入 ssh -T [email protected],测试,成功即解决。这里楼主贴的是人家的,脚本这一块是薄弱项,需要花点时间学习下。记录之



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3