git客户端公钥怎么传到服务器?,ssh密钥配置失败怎么办

把客户端公钥推送到服务器的核心操作,就是通过ssh-copy-id命令一键完成授权,或者手动将~/.ssh/id_rsa.pub追加到服务器端的~/.ssh/authorized_keys文件中,掌握了这两种方式,你就不再需要每次连接都输入密码了。

为什么要先理解公钥与私钥的配对逻辑

很多新手在配置免密登录时,容易把“推”和“拉”的关系弄反,客户端生成的是一对密钥:私钥留在本地(相当于你的身份证),公钥放到服务器(相当于门禁系统里的备案信息),服务器验证的是签名,不是密码本身。

【Git教程】5-8 SSH公钥配置
加载中
【Git教程】5-8 SSH公钥配置

理解authorized_keys文件的作用

服务器端的~/.ssh/authorized_keys文件是整个免密机制的核心,当你在客户端发起SSH连接时,服务器会用这个文件里的公钥来挑战你的私钥,如果匹配成功,直接放行,行业共识认为,理解这个文件的管理权限比记住命令本身更重要文件权限必须是600,所属目录权限必须是700,否则SSH服务会出于安全考虑忽略该文件。

确认本地是否已有密钥对

在推送之前,先检查本地是否存在密钥,打开终端执行:

ls -la ~/.ssh/

如果看到id_rsa和id_rsa.pub两个文件,说明已经生成过密钥对。id_rsa是私钥,务必不要泄露;id_rsa.pub是公钥,就是待会儿要推送到服务器的内容,如果目录为空或者根本没有.ssh目录,则需要重新生成。

git公钥生成后怎么配置

这是国内开发者最常搜索的操作路径,生成密钥的步骤极其简单,但很多人卡在了“生成后不知道该拿这个文件怎么办”,这里给出标准流程。

使用ed25519算法生成更安全的密钥

较新的SSH版本支持ed25519算法,相比传统的rsa更安全且长度更短,执行以下命令:

ssh-keygen -t ed25519 -C "你的邮箱或备注"

如果服务器版本较老,只能兼容RSA,则改用:

ssh-keygen -t rsa -b 4096 -C "你的邮箱或备注"

回车后系统会询问保存路径和密码短语。路径直接回车默认即可,密码短语可以不设置(直接回车两次),但如果追求更高的安全性,建议设置一个,注意,设置密码短语后,每次使用私钥都需要输入这个短语,实际操作中很多人因为嫌麻烦而留空。

复制公钥内容的两种方式

生成完毕后,公钥文件是纯文本,内容格式为ssh-ed25519 AAAA... 你的备注,在Linux或macOS下用cat

git客户端公钥怎么传到服务器?,ssh密钥配置失败怎么办

命令查看,在Windows的PowerShell下用type命令查看。

cat ~/.ssh/id_ed25519.pub

完整复制输出的所有内容,这是接下来要推送到服务器的核心数据。

ssh公钥推送到服务器命令有哪些

最常见的推送命令是ssh-copy-id,它帮你省去了手动创建目录和处理权限的麻烦,但很多用户想了解更底层的实现原理,我这里把三种典型方式都列出来。

ssh-copy-id一键推送

这是最推荐的方式,尤其适合不熟悉Linux文件权限的新手。

ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP

执行后输入一次服务器密码,公钥就会自动追加到服务器上对应用户的authorized_keys文件中,命令内部做了三件事:连接服务器、创建.ssh目录(如果不存在)、将公钥追加到authorized_keys。执行完务必测试免密登录:

ssh 用户名@服务器IP

如果直接进入服务器而不再提示密码,推送成功。

手动追加公钥

当ssh-copy-id不可用(部分精简版系统未安装此工具)时,采用手动方式,先在本地查看公钥内容并复制:

cat ~/.ssh/id_ed25519.pub

然后登录服务器:

ssh 用户名@服务器IP

在服务器上执行以下命令:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "粘贴你刚才复制的公钥内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

注意,你的服务器登录用户决定了公钥归属于哪个账户,比如用root登录,那公钥就只对root用户生效,如果你平时用普通用户登录,就要在普通用户的家目录下执行上述操作,这一步是git公钥生成后怎么配置中最容易出错的地方很多用户用root配置完,切换普通用户登录时发现仍要密码。

scp传输后追加

如果公钥文件在本地,也可以通过scp传到服务器临时目录,再登录服务器追加。

scp ~/.ssh/id_ed25519.pub 用户名@服务器IP:/tmp/
ssh 用户名@服务器IP
cat /tmp/id_ed25519.pub >> ~/.ssh/authorized_keys
rm /tmp/id_ed25519.pub

这种方式适合公钥内容过长、手动复制容易遗漏的场景。

GitHub和Gitee平台的公钥配置差异

大多数开发者使用git不仅仅是连接自己的服务器,还要推送代码到代码托管平台,这个场景下,“服务器”变成了平台方的服务器,配置路径从命令行变成了网页操作。

git客户端公钥怎么传到服务器?,ssh密钥配置失败怎么办

GitHub配置路径

登录GitHub后,依次进入Settings → SSH and GPG keys → New SSH key随意填写,Key区域粘贴你的公钥内容,点击添加,这里的核心坑在于:粘贴时不能有多余空格或换行符,粘贴后仔细检查前后是否有遗漏。

Gitee配置路径

Gitee的路径是设置 → 安全设置 → SSH公钥,整个流程与GitHub类似,但据部分开发者反馈,Gitee的密钥校验有时存在缓存延迟,添加后等待几分钟再测试连接比较稳妥。

公司内部GitLab配置路径

内网部署的GitLab通常路径为Preferences → SSH Keys,部分企业开启了LDAP或SSO登录,这种情况下公钥绑定的是企业的统一身份ID,离职后公钥自动失效,无需手动删除。

测试连接是验证推送是否成功的唯一标准

很多人在配置完公钥后直接git clone,提示权限错误就懵了,测试连接的命令如下:

对于GitHub:

ssh -T git@github.com

看到Hi 你的用户名! You've successfully authenticated 说明成功。

对于Gitee:

ssh -T git@gitee.com

对于自有服务器:

ssh -T 用户名@服务器IP

有些操作场景下推出了ssh config配置来管理多主机密钥,如果你同时使用多个平台,建议在~/.ssh/config中为不同主机指定不同的密钥文件:

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_github
Host myserver
  HostName 192.168.1.100
  User root
  IdentityFile ~/.ssh/id_ed25519_server

这样配置后,git clone git@github.com:用户名/仓库名.git会自动匹配对应的密钥,不用手动切换。

git ssh密钥配置失败常见原因排查

即使操作步骤完全正确,依然有部分开发者遇到配置后不生效的情况,根据多个技术社区的问题汇总,绝大多数失败集中在以下四个原因。

本地私钥和公钥不匹配

如果你之前生成过多次密钥,又在不同目录下执行过操作,可能推送的是A公钥,而当前环境里git使用的是B私钥,排查方法:

ssh-add -l

这个命令列出当前SSH代理中加载的私钥,如果列表为空,手动添加:

ssh-add ~/.ssh/id_ed25519

服务器端目录权限错误

这是手动配置时最常见的问题,用下面命令修复:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

git客户端公钥怎么传到服务器?,ssh密钥配置失败怎么办

注意,~/.ssh目录的父目录(即你的家目录)也不能被其他用户写入,否则SSH会拒绝信任,执行:

chmod go-w ~

密钥格式不被服务器接受

部分老版本操作系统自带的SSH服务不认ed25519格式公钥,观察服务器系统版本,如果是CentOS 6或更早的Ubuntu版本,建议重新生成RSA格式密钥,或者用ssh-keygen -p -f ~/.ssh/id_ed25519 -m PEM转换格式。

多个公钥混用导致认证顺序问题

如果有多个公钥文件在~/.ssh目录下,SSH客户端会按顺序尝试,如果某个公钥被服务器拒绝,可能不会自动尝试下一个,解决方式是在~/.ssh/config中通过IdentitiesOnly yes参数强制使用指定密钥。

用户常问的关于公钥推送的实操问题

git配置公钥后clone依然提示要密码是什么原因

这个情况基本可以断定公钥没有被正确加载,先跑一遍ssh -T git@github.com(或对应的平台),看输出信息,如果是Permission denied (publickey),重点检查当前git仓库的远程URL是否使用的是SSH协议,如果你在clone时用的是https://开头的链接,git会走用户名密码认证,与公钥完全无关,解决办法是修改远程地址:

git remote set-url origin git@github.com:用户名/仓库名.git

公司电脑换新后怎么把旧公钥推送到新服务器的备份

如果你在新电脑上重新生成了一对密钥,且需要推送的服务器还在运行,直接在新电脑上执行ssh-copy-id即可,但注意:新公钥追加到authorized_keys后,旧公钥默认仍然保留,从安全角度考虑,建议登录服务器,手动编辑authorized_keys文件,删除不再使用的旧公钥行,避免离职员工或丢失的设备继续拥有访问权。

多台电脑是否可以共用同一份公钥

技术上完全可以,将同一公钥文件的内容复制到多台需要连接的本地机器上,配上对应的私钥即可,但行业专家指出,多台设备共用同一私钥会扩大泄露面,任一台设备被攻破,私钥就泄露了,所有服务器都会暴露,对于追求高安全性的团队,推荐每台设备生成独立密钥对,然后在服务器上追加多个公钥,每个公钥占一行,这样即便某个设备丢失,只需在服务器上删除对应行即可精准回收权限,不影响其他设备。

服务器端的authorized_keys文件每行对应一个公钥,完全支持数百个条目,维护多个公钥的加分操作是:在每个公钥末尾的备注里加上设备名或使用人姓名,方便后续识别和清理。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/654481.html

赞 (0)
QQ空间一直提示服务器繁忙怎么解决,QQ空间打不开是什么原因
上一篇 2026年9月15日 10:00
GTA5注册服务器错误怎么破,线上模式进不去怎么办
下一篇 2026年9月15日 10:01

相关推荐

  • 广州服务器空间怎么选?广州服务器空间租用哪家好

    2026年部署广州服务器空间,首选BGP多线机房与等保2.0合规架构,结合边缘计算节点方能实现大湾区业务毫秒级响应与数据安全闭环,2026广州服务器空间的核心价值与选型逻辑为什么大湾区企业必须锁定广州节点?地理与网络拓扑决定了业务的天花板,根据中国信通院2026年《粤港澳大湾区算力协同发展白皮书》数据显示,广州……

    2026年5月1日
    6300
  • Excel二次拟合怎么操作?excel二次拟合公式

    Excel二次拟合的核心在于利用“添加趋势线”功能或“LINEST”函数,将散点图数据转化为抛物线模型,从而精准捕捉非线性变化规律,在数据分析的日常场景中,线性关系往往过于理想化,当数据呈现先上升后下降,或者加速增长的趋势时,强行使用线性回归会导致巨大的误差,二次拟合(Quadratic Fit)通过引入平方项……

    2026年7月4日
    8700
  • ASP.NET导出Excel怎么实现?类库代码分享教程

    在ASP.NET项目中高效、可靠地导出Excel数据是开发者经常遇到的核心需求,一个强大且灵活的类库能显著提升开发效率和用户体验,经过深入实践与技术评估,EPPlus库是当前ASP.NET生态中处理Excel导出(尤其是基于Open XML格式的.xlsx文件)最专业、最值得优先考虑的选择,它功能全面、性能优异……

    2026年2月11日
    16010
  • 服务器ecs是一种什么?云服务器ECS和传统服务器区别

    服务器ECS是一种基于云计算架构提供的弹性计算服务,由云服务商(如阿里云、腾讯云、华为云等)统一管理底层物理资源,用户可按需自助获取、配置与释放虚拟机实例,实现资源使用的高度灵活与成本优化,核心优势在于“弹性、稳定、安全、高效”四大维度,具体展开如下:弹性伸缩能力按需创建与释放:用户可在数秒内完成ECS实例的创……

    程序编程 2026年4月17日
    5700
  • 蓝米云2026春节云服务器打折力度大吗,云服务器新购月付季付8折

    蓝米云2023春节促销核心优惠为:云服务器新购月付/季付享8折,半年付/年付享7折;独立服务器新购统一85折且不限时长,适合长期稳定业务部署,春节不仅是阖家团圆的时刻,也是IT基础设施升级的黄金窗口期,对于中小企业和技术团队而言,利用假期窗口完成服务器迁移或扩容,能有效避开节后流量高峰带来的运维压力,蓝米云此次……

    2026年6月24日
    3410
  • 标准型s4轻量服务器到底怎么样?,值得买吗?

    标准型s4轻量服务器是腾讯云轻量应用服务器家族中面向中小网站和个人开发者的主力机型,整体性价比高,适合建站和部署中小型应用,但在高并发场景下性能会明显受限,标准型s4轻量服务器到底适合什么人用很多朋友一上来就问这个配置行不行,其实先搞清楚自己的用途比什么都重要,s4轻量服务器目前市场定位非常清晰,它就是给那些不……

    程序编程 2026年8月16日
    500
  • 青岛日韩方向直播卡顿怎么办?大带宽租用有用吗?

    青岛做日韩方向直播卡顿,多数情况下不是摄像头或直播机的问题,而是普通宽带的跨境上行链路撑不住,租一条青岛本地接入、专门优化日本韩国方向的直播大带宽,基本能解决推流丢帧、延迟飘高、观众端频繁转圈的问题,青岛日韩方向直播为什么总卡在最后一段青岛离日本、韩国地理距离不算远,普通网页访问也不慢,但直播推流和普通访问完全……

    2026年9月16日
    200
  • 一个服务器两个IP怎么ping通,双网卡ping不通怎么办

    一台服务器配两个IP,ping不通这件事,九成是路由表没配好,其次是防火墙或安全组拦了ICMP请求,想解决问题,你得先弄清双IP是怎么挂上去的,再顺着排查思路一步步来,先分清你的双IP是哪种配置方式两个IP在服务器上落地,方式不一样,排查方向天差地别,先把你的情况对号入座,单网卡绑定辅助IP,一块物理网卡上临时……

    2026年9月9日
    000
  • 构建智能边缘设备,如何构建智能边缘设备,智能边缘设备

    构建智能边缘设备的核心在于将算力下沉至数据源头,通过低功耗芯片与轻量化算法的结合,实现毫秒级响应与数据隐私保护,这是解决云端延迟瓶颈的最优解,为什么选择边缘计算而非纯云端架构在物联网场景日益复杂的今天,单纯依赖云端处理所有数据已显得力不从心,想象一下,当工厂流水线上的摄像头捕捉到产品瑕疵时,如果数据需要往返于千……

    程序编程 2026年5月25日
    5100
  • 2026年热门分布式缓存服务哪个好?怎么选

    分布式缓存服务的优劣取决于业务场景、成本预算和运维能力,Redis凭借丰富的数据结构、持久化能力和活跃社区成为通用首选,但在纯KV缓存且对延迟极度敏感的场景下Memcached仍有低成本优势,分布式缓存服务对比:性能、成本与场景决定选取方向选缓存服务不能只看名气,需要从吞吐量、数据持久化、运维成本和业务贴合度四……

    2026年7月15日
    2000

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注