生成多个git ssh密钥

本文详细介绍了如何自定义公钥名称并解决SSH权限问题,包括生成公钥、配置SSH用户文件、上传公钥至Git服务器、测试配置及解决多用户环境下权限冲突的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果你已经有了一套名为 id_rsa 的公秘钥,将要生成另外一个公钥,比如 aysee ,你也可以使用任何你喜欢的名字。

步骤如下:

 

1、生成一个新的自定义名称的公钥:

ssh-keygen -t rsa -C "YOUR_EMAIL@YOUREMAIL.COM" -f ~/.ssh/aysee

  执行命令后,生成命名的公钥和生成默认公钥的步骤一样。

执行完成后,会在 ~/.ssh/目录下生成一个 aysee 和 aysee.pub 文件。

2、在 SSH 用户配置文件 ~/.ssh/config 中指定对应服务所使用的公秘钥名称,如果没有 config 文件的话就新建一个,并输入以下内容:

Host github.com www.github.com
  IdentityFile ~/.ssh/aysee

3、添加 aysee.pub 到你的git服务器网站上。

4、测试配置文件是否正常工作

ssh -T git@gitcafe.com

  如果,正常的话,会出现如下提示:

Hi USERNAME! You've successfully authenticated, but github does not provide shell access.

  如果出现如下提示,则说明有权限问题

Permission denied (publickey)

  如果有权限问题的情况下,你对项目执行push操作的时候,会得到如下提示:

Warning: Permanently added the RSA host key for IP address '192.30.252.129' to the list of known hosts.
Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

  

多用户时出现权限问题的原因:

github使用SSH与客户端连接。如果是单用户(first),生成密钥对后,将公钥保存至 GitHub ,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。单用户情况下,连接的服务器上保存的公钥和发送的私钥自然是配对的。但是如果是 多用户 (first,second),我们在连接到second的帐号时,second保存的是自己的公钥,但是SSH客户端依然发送默认私钥,即first的私钥,那么这个验证自然无法通过。

 

解决ssh权限问题():

通常一台电脑生成一个ssh不会有这个问题,当一台电脑生成多个ssh的时候,就可能遇到这个问题,解决步骤如下:

1、查看系统ssh-key代理,执行如下命令

$ ssh-add -l

  以上命令如果输出  The agent has no identities. 则表示没有代理。如果系统有代理,可以执行下面的命令清除代理:

$ ssh-add -D

2、然后依次将不同的ssh添加代理,执行命令如下:

$ ssh-add ~/.ssh/id_rsa
$ ssh-add ~/.ssh/aysee

 你会分别得到如下提示:

2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/aysee/.ssh/id_rsa (RSA)

  和

2048 8e:71:ad:88:78:80:b2:d9:e1:2d:1d:e4:be:6b:db:8e /Users/aysee/.ssh/id_rsa (RSA)
2048 a7:f4:0d:f1:b1:76:0b:bf:ed:9f:53:8c:3f:4c:f4:d6 /Users/aysee/.ssh/aysee (RSA)

  如果使用 ssh-add ~/.ssh/id_rsa的时候报如下错误,则需要先运行一下 ssh-agent bash 命令后再执行 ssh-add ...等命令

Could not open a connection to your authentication agent.

  

3、配置 ~/.ssh/config 文件

  如果没有就在~/.ssh目录创建config文件,该文件用于配置私钥对应的服务器

# Default github user(first@mail.com)

Host github.com
HostName github.com
User git
IdentityFile C:/Users/username/.ssh/id_rsa

# aysee (company_email@mail.com) Host github-aysee HostName github.com User git IdentityFile C:/Users/username/.ssh/aysee

  Host随意即可,方便自己记忆,后续在添加remote是还需要用到。 配置完成后,在连接非默认帐号的github仓库时,远程库的地址要对应地做一些修改,比如现在添加second帐号下的一个仓库test,则需要这样添加:

git remote add test git@github-aysee:ay-seeing/test.git 
#并非原来的git@github.com:ay-seeing/test.git

  ay-seeing 是github的用户名

 

4、测试 ssh

ssh -T git@github.com

  你会得到如下提示,表示这个ssh公钥已经获得了权限

Hi USERNAME! You've successfully authenticated, but github does not provide shell access.

  

### 为Gitee仓库配置Git SSH密钥的步骤 为了实现免密码访问Gitee仓库,需要生成独立的SSH密钥对,并将其与Gitee账户绑定。通过配置SSH客户端,可以确保在访问Gitee时使用正确的私钥进行身份验证。 #### 创建SSH密钥对 如果尚未生成SSH密钥对,可以使用以下命令生成新的密钥对,并将其保存在`~/.gitee`目录下: ```bash # 创建存储SSH密钥的目录 install -d -m 700 -o ${USER} -g ${GOURP} ~/.gitee # 生成SSH密钥ssh-keygen -t rsa -b 4096 -C "3行代码5个Bug" -f ~/.gitee/id_rsa -N "" ``` 生成完成后,公钥文件路径为`~/.gitee/id_rsa.pub`,私钥文件路径为`~/.gitee/id_rsa`。如果已有密钥对,可以直接将私钥保存到`~/.gitee`目录中[^1]。 #### 配置SSH客户端 在`~/.ssh/config`文件中添加针对Gitee的配置,确保在访问`gitee.com`时使用指定的用户名和私钥。例如,如果Gitee的用户名为`demo`,则配置如下: ```bash Host gitee.com HostName gitee.com User demo IdentityFile ~/.gitee/id_rsa ``` 配置完成后,修改`~/.ssh/config`文件的权限为`600`,以确保安全性: ```bash chmod 600 ~/.ssh/config ``` #### 上传公钥到Gitee 将生成的公钥内容复制到剪贴板: ```bash cat ~/.gitee/id_rsa.pub ``` 登录Gitee账户,进入 **设置(Settings)** > **SSH公钥(SSH Keys)** 页面,点击 **添加公钥(Add SSH Key)**,填写标题并粘贴公钥内容,最后点击保存。完成上传后,即可通过SSH密钥进行身份验证[^2]。 #### 测试SSH连接 完成配置后,测试SSH连接是否成功: ```bash ssh -T git@gitee.com ``` 如果看到类似以下输出,则表示SSH连接配置成功: ``` Hi username! You've successfully authenticated, but GITEE.COM does not provide shell access. ``` #### 使用SSH克隆仓库 现在可以使用SSH URL克隆仓库。例如: ```bash git clone git@gitee.com:username/repository.git ``` 确保将`username`和`repository`替换为实际的用户名和仓库名。通过这种方式,可以实现免密码访问Gitee仓库,并确保安全性。 ### 注意事项 - 确保SSH密钥文件的权限正确,私钥文件应设置为`600`权限。 - 如果已有多个SSH密钥,请确保`~/.ssh/config`文件中的配置正确,避免冲突。 - 如果遇到连接问题,可以尝试清除已知的主机信息并重新连接: ```bash ssh-keygen -R gitee.com ``` ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值