配置SSH连接Git—使用非默认密钥名称(非id_rsa)

由于已经配置了id_rsa负责远程服务器的ssh连接,在配置git时,再创建id_rsa会覆盖ssh_key文件,故需要使用非默认密钥名称

生成新的SSH密钥

ssh-keygen -t ed25519 -C "<your github email>"
# -C后面的是自定义的密钥注释/标签,这里一般输入自己的邮箱
# 此时会询问你是否自定义密钥名字和路径,按需修改即可
# Generating public/private ed25519 key pair.
# Enter file in which to save the key (~/.ssh/id_ed25519): ~/.ssh/id_git
# 是否需要给该密钥添加密码,一般直接敲回车跳过
# Enter passphrase (empty for no passphrase): 
# Enter same passphrase again: 
# Your identification has been saved in id_git.
# Your public key has been saved in id_git.pub.
# The key fingerprint is: xxx
# The key's randomart image is: xxx

如果希望一次到位可以尝试

ssh-keygen -t ed25519 -C "<your github email>" -f ~/.ssh/id_git

添加密钥到Github账户

先把公钥内容输出复制

cat ~/.ssh/id_git.pub

复制公钥内容到自己的Github账户中,具体地:点击Github右上角账户图标→Settings→SSH and GPG keys→New SSH key,在Key一栏粘贴公钥内容,在Title一栏设定这个SSH密钥的名称

配置 系统使用git密钥而不是id_rsa

选项1:配置SSH Config 文件

通过以下命令创建 SSH Config 文件

touch ~/.ssh/config

编辑Config文件

nano ~/.ssh/config

输入以下内容,Ctrl+S保存、Ctrl+X退出

# Github
Host github.com
  HostName github.com
  IdentityFile ~/.ssh/id_git

具体的配置项含义如下:

  • Host:主机配置的标识符。

  • HostName:主机的地址或域名。

  • IdentityFile:用于身份验证的私钥文件路径。

选项2:添加密钥到SSH-Agent

启动SSH-Agent:

eval "$(ssh-agent -s)"

添加密钥

ssh-add ~/.ssh/id_rsa
  • 注意,SSH-Agent在每次终端会话结束时自动终止。每次开启新的终端窗口或重启计算机后,都需要重新运行启动SSH-Agent的命令和添加密钥的命令。故而更推荐选项1:配置SSH Config

设置文件权限

给私钥、公钥和SSH Config文件设置0600文件权限

chmod 600 ~/.ssh/config/id_ras
chmod 600 ~/.ssh/config/id_ras.pub
chmod 600 ~/.ssh/config/config
  • 注意,如果不给文件设置0600权限,给0644或0755权限,在后续链接时会出现Permission denied (publickey)报错

验证

执行完上述两步操作后,正常情况下已经配置成功了,此时可以验证一下:

ssh -T git@github.com

如果输出以下内容,则表示配置成功,此时即可直接进行任何git操作。

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

把Git仓库的Https url修改为SSH url

在未配置Git SSH之前clone的仓库使用都是Https Url,该仓库此时的remote协议仍然时Https协议,然而SSH密钥连接只支持SSH url,不支持Https url,故会要求输账户密码。

在仓库下输入以下命令查看remote协议

git remote -v
# 如果输出类似以下内容,则说明remote协议是HTTPS协议
# https://github.com/xxx/xxx.git

# 也可以查看仓库内的.git/config文件。
# [remote "origin"]
#   url = https://github.com:YOUR_ACCOUNT/YOUR_PROJECT.git
#   fetch = +refs/heads/*:refs/remotes/origin/*

修改Remote协议

git remote set-url origin git@github.com:xxx/xxx.git

如果端口无响应或网络环境不好,还可尝试

git remote set-url origin ssh://git@ssh.github.com:443/xxx/xxx.git
# Github 官方提供的 443 端口的 SSH(依然是 SSH 协议),适用于限制访问 22 端口的网络环境

参考链接

1.Github配置SSH密钥连接(附相关问题解决)

2.配置SSH连接Git教程

3.Git 使用非默认密钥名称(非id_rsa)

4.Git SSH Config 配置文件

5.解决 Git 连接时出现 Permission denied (publickey)的解决指南

Comments | NOTHING

    空空如也!

消息盒子
# 您需要首次评论以获取消息 #
# 您需要首次评论以获取消息 #

只显示最新10条未读和已读信息