Git通过配置SSH密钥对实现免登录的完整指南

 更新时间:2025年11月04日 09:14:59   作者:Ven%  
在使用 Git 进行版本控制时,每次推送代码都需要输入用户名和密码会严重影响工作效率,通过配置 SSH 密钥对,可以实现免密码认证,让 Git 操作更加便捷安全,下面小编为大家详细介绍一下,需要的朋友可以参考下

概述

在使用 Git 进行版本控制时,每次推送代码都需要输入用户名和密码会严重影响工作效率。通过配置 SSH 密钥对,可以实现免密码认证,让 Git 操作更加便捷安全。

配置步骤

1. 生成 SSH 密钥对

使用以下命令生成 RSA 密钥对,其中 Hettyka 是标识符,可根据需要自定义:

ssh-keygen -t rsa -b 4096 -C "Hettyka"

在这里插入图片描述

执行过程说明:

  • 系统会提示选择密钥保存路径,默认按 Enter 使用推荐路径
  • 设置密钥密码(可选,直接按 Enter 跳过)
  • 生成完成后会显示密钥指纹和随机字符图像

生成的文件:

id_rsa:私钥文件(必须保密) id_rsa.pub:公钥文件(可公开)

在这里插入图片描述

2. 配置公钥到代码托管平台

以 Gitee 为例:

  • 复制公钥内容:
cat ~/.ssh/id_rsa.pub
  • 登录 Gitee,进入「设置」→「SSH 公钥」
  • 添加新的 SSH 公钥,将复制的公钥内容粘贴到输入框中
  • 填写标题(可选),点击确认

3. 配置 SSH 代理

3.1 启动 SSH 代理

eval "$(ssh-agent -s)"

3.2 添加私钥到 SSH 代理

ssh-add ~/.ssh/id_rsa

权限问题处理:

如果遇到 Permission denied 错误,可能需要使用管理员权限:

这时需要提高私钥权限:

4. 测试连接

验证 SSH 连接是否配置成功:

ssh -T git@gitee.com

成功时会显示欢迎信息,确认密钥已正确配置。

5. 配置 Git 远程仓库

查看当前远程仓库地址

git remote -v

更换为 SSH 地址

如果当前使用 HTTPS 地址,需要更换为 SSH 协议:

git remote set-url origin 你的ssh仓库地址

注意事项

  1. 私钥安全:私钥文件相当于密码,切勿泄露给他人
  2. 多平台配置:如需在多个代码平台使用,通常只需在不同平台重复步骤 2
  3. 多密钥管理:如需为不同平台配置不同密钥,可在 SSH 配置文件中设置

验证配置

完成所有步骤后,执行 Git 推送操作:

git push origin main

如果配置正确,将不再需要输入密码即可完成操作。

故障排除

  • 连接失败:检查公钥是否正确添加到代码平台
  • 权限错误:确保私钥文件权限为 700
  • 代理问题:确认 SSH 代理正常运行且已加载私钥

通过以上配置,即可实现 Git 操作的免登录认证,提升开发效率。

遇到的问题:

重新打开ssh标签页去拉代码的时候,就会遇到这种情况:

原因是:SSH 认证代理 (ssh-agent) 在每次重新连接服务器时都会重置

1.ssh-agent 是会话级别的:每次断开 SSH 连接,ssh-agent 进程就会终止
2.密钥未持久化:添加到 ssh-agent 的密钥只在当前会话有效
3.缺乏自动启动机制:服务器没有配置自动启动和加载 SSH 密钥

永久解决方案

方案一:配置 SSH 自动加载密钥(推荐)
编辑 SSH 配置文件:

# 编辑 SSH 配置文件
vim ~/.ssh/config
 
# 添加以下内容
Host gitee.com
    HostName gitee.com
    User git
    IdentityFile /root/git/id_rsa
    IdentitiesOnly yes
 
# 设置正确权限
chmod 600 ~/.ssh/config

这样每次打开新的会话的时候,密钥还是会存在,可以直接拉取git仓库上的代码

到此这篇关于 Git通过配置SSH密钥对实现免登录的完整指南的文章就介绍到这了,更多相关 Git配置SSH密钥对免登录内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • VSCode设置默认浏览器打开的两种方式

    VSCode设置默认浏览器打开的两种方式

    在使用vscode编辑器的时候,如果我们不设置默认浏览器,那么直接打开的是IE浏览器,在进行页面调试的时候无疑是有点麻烦的,这篇文章主要给大家介绍了关于VSCode设置默认浏览器打开的两种方式,需要的朋友可以参考下
    2023-09-09
  • 深度学习开源框架基础算法之傅立叶变换的概要介绍

    深度学习开源框架基础算法之傅立叶变换的概要介绍

    今天小编就为大家分享一篇关于深度学习开源框架基础算法之傅立叶变换的概要介绍,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • web服务器程序运行出现乱码问题的解决方法

    web服务器程序运行出现乱码问题的解决方法

    有时候程序运行是,出现乱码,不是因为数据库的问题,是因为没有定义编码的问题,大家可以看下养成良好的编码习惯。
    2009-12-12
  • VS2019中Git源代码管理实现总结

    VS2019中Git源代码管理实现总结

    这篇文章主要介绍了VS2019中Git源代码管理实现总结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • sqoop如何指定pg库的模式(方法详解)

    sqoop如何指定pg库的模式(方法详解)

    sqoop是一个用来将hadoop中hdfs和关系型数据库中的数据相互迁移的工具,可以将一个关系型数据库(mysql、oracle等)中的数据导入到hadoop的hdfs中,也可以将hdfs的数据导入到关系型数据库中,本文给大家介绍sqoop如何指定pg库的模式,一起看看吧
    2022-01-01
  • 网络抓包工具wireshark入门教程详解

    网络抓包工具wireshark入门教程详解

    Wireshark是一个网络数据包分析软件,功能非常强大,奈何他是英文版的,今天就为大家详细介绍一下网络抓包工具wireshark的使用教程
    2018-10-10
  • git进阶之hooks勾子脚本详解

    git进阶之hooks勾子脚本详解

    这篇文章主要介绍了git进阶之hooks勾子脚本的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • Azkaban报错-azkaban.executor.ExecutorManagerException: No active executors found

    Azkaban报错-azkaban.executor.ExecutorManagerException: No acti

    这篇文章主要介绍了Azkaban报错-azkaban.executor.ExecutorManagerException: No active executors found,本文给大家介绍的非常详细,需要的朋友可以参考下
    2020-05-05
  • Jar包一键重启的Shell脚本及新服务器部署的一些经验分享

    Jar包一键重启的Shell脚本及新服务器部署的一些经验分享

    这篇文章主要介绍了Jar包一键重启的Shell脚本及新服务器部署的一些经验,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • 关于IDEA git 只有Commit没有Push的问题

    关于IDEA git 只有Commit没有Push的问题

    这篇文章主要介绍了关于IDEA git 只有Commit没有Push的问题,本文给大家介绍的非常想详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01

最新评论