【Git】为不同账号配置不同的SSH Key

前言

一、生成密钥(github和gitee示例)

  • 命令格式:ssh-keygen -t [密钥算法,一般采用rsa或ed25519] -C "[账户邮箱即可]" -f ~/.ssh/[密钥文件名称]
  • 生成gitee:ssh-keygen -t ed25519 -C "xxx@mail.com" -f ~/.ssh/gitee_ed25519
  • 生成github:ssh-keygen -t ed25519 -C "xxx@mail.com" -f ~/.ssh/github_ed25519
  • 生成文件的路径:~/.ssh (C:\Users\电脑用户名.ssh)
  • 一条命令会生成两份文件,一份gitee_ed25519的密钥文件,一份则是带有.pub后缀的公钥文件,公钥文件后面会用到

二、创建或者修改文件 ~/.ssh/config,添加如下内容:

# gitee
    Host gitee.com
    HostName gitee.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitee_ed25519
# github
    Host github.com
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_ed25519

配置文件参数

  • Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名>和ssh文件
  • HostName : 要登录主机的主机名
  • IdentityFile : 生成的密钥文件路径

三、在对应git网站上添加ssh公钥

  • 找到刚才生成密钥的文件夹(~./ssh),将带有.pub后缀的文件打开
  • 分别访问github、gitee、公司git网址页面,找到个人设置,找到ssh选项,然后将对应的公钥添加进去

四、测试访问是否成功

  • 上述步骤全部完成后,可以依次测试配置有效性
  • 在git命令行中输入命令ssh -T git@github.com测试,成功则会返回如下示例内容
$ ssh -T git@github.com
Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

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

五、常见问题解决

  1. 如果使用命令ssh -T git@github.com时,返回内容显示 ssh: connect to host github.com port 22: Connection refuse

首先使用ssh -vT git@github.com,查看建立ssh连接的过程

$ ssh -vT git@github.com
OpenSSH_9.9p2, OpenSSL 3.2.4 11 Feb 2025
debug1: Reading configuration data /c/Users/wuyiz/.ssh/config
debug1: /c/Users/wuyiz/.ssh/config line 2: Applying options for github.com
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Connecting to github.com [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
ssh: connect to host github.com port 22: Connection refused

这里显示连接github.com的地址居然是::1和127.0.0.1。前者是IPV6的localhost地址,后者是IPV4的localhost地址
说明DNS解析有问题,导致github.com域名被解析成了localhost的ip地址,就自然连不上GitHub
可以尝试在命令行输入ipconfig/flushdns,或者关闭电脑上启动的代理或加速器等软件
如果还是不行,只能手动在hosts里增加域名映射了,具体可以网络搜索教程

  1. 如果使用命令ssh -T github.com时,返回访问被拒绝

建议优先检查上述配置步骤是否有配置错误或遗漏的地方,确保每一个步骤都没有问题
或者重复配置一边试试

posted @ 2025-03-25 17:47  中国制造  阅读(168)  评论(0)    收藏  举报