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_rsaid_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后,依次进入SettingsSSH and GPG keysNew SSH key随意填写,Key区域粘贴你的公钥内容,点击添加,这里的核心坑在于:粘贴时不能有多余空格或换行符,粘贴后仔细检查前后是否有遗漏。

Gitee配置路径

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

公司内部GitLab配置路径

内网部署的GitLab通常路径为PreferencesSSH 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

相关推荐

  • ASP.NET运行环境有哪些关键要素和常见配置疑问?

    ASP.NET运行环境是一个用于构建和运行ASP.NET应用程序的软件平台,它提供了必要的库、服务和执行引擎,确保应用程序能够在服务器上高效、安全地处理用户请求,其核心组件包括.NET运行时(如.NET Core或.NET Framework)、Web服务器(如IIS或Kestrel)以及相关的配置和工具链,通……

    2026年2月3日
    12130
  • 如何用asp实现二级联动下拉菜单的源码示例

    ASP二级联动下拉菜单是动态网站中提升用户交互体验的核心功能,通过前端与后端数据库的实时交互实现数据的动态加载,其核心原理是利用AJAX技术,根据用户在一级菜单的选择异步请求服务器,后端ASP程序从数据库检索关联数据并返回JSON格式结果,前端JavaScript动态渲染二级选项,技术实现核心四步流程前端事件绑……

    2026年2月6日
    10300
  • cs2成都服务器卡顿怎么解决,网络延迟高怎么办

    成都服务器卡顿先别急着抱怨游戏,核心结论是:多数情况下是本地网络链路到成都节点绕路或丢包,其次是平台节点调度问题,最后才是硬件性能不足,你需要的是一套从本地到链路的排查动作,而不是反复重启客户端干等,先分清卡顿的三种具体表现,定位问题源头延迟高、跳Ping、丢包,三种表现对应的故障点完全不同,很多玩家一卡就直接……

    2026年9月2日
    500
  • 香港服务器测评,实测数据与性能表现,香港服务器哪家好用

    2026年香港服务器实测显示,其核心优势在于低延迟访问东南亚及国内南部地区,带宽成本虽高于大陆但低于欧美,适合跨境电商、游戏加速及出海业务,推荐选择CN2 GIA线路以平衡速度与稳定性,香港服务器核心性能实测数据解析在2026年的网络基础设施环境下,香港作为亚洲互联网枢纽的地位依然稳固,通过对主流云服务商及独立……

    2026年5月15日
    5200
  • 广电网络怎样设置上网?广电宽带怎么连接路由器上网

    广电网络设置上网的核心在于光猫正确桥接或路由模式配置、路由器PPPoE拨号或DHCP自动获取IP,并结合2026年广电全面普及的IPv6双栈协议与全光组网标准完成最终终端参数分配,广电网络上网设置前置准备硬件与线缆确认在动手设置前,请确保广电网络入户设备齐全且连接正确,2026年广电接入网已全面向FTTR(光纤……

    2026年4月24日
    1.2K00
  • 服务器JVM进程崩溃是什么原因,如何排查解决?

    服务器JVM进程崩溃的根本原因通常在于内存溢出(OOM)、线程死锁或资源耗尽导致系统自我保护,解决的核心在于优化JVM配置、分析崩溃日志以及完善监控体系,面对线上服务突然不可用的紧急情况,盲目重启往往治标不治本,只有精准定位根因,才能彻底解决服务器JVM进程崩溃的隐患,核心诊断:快速定位崩溃根源当崩溃发生时,首……

    2026年3月29日
    9000
  • CYUN服务器测评,CN2 GIA高防实测体验,CN2 GIA服务器好不好?

    在 2026 年网络环境复杂化背景下,CYUN 服务器凭借 CN2 GIA 直连优化与高防 IP 的实战表现,成为国内中小企业出海及游戏行业对抗 DDoS 攻击的首选高性价比方案,随着全球网络基础设施的迭代,2026 年跨境数据传输对延迟与稳定性的要求达到了新高度,对于急需解决跨国访问卡顿、遭受恶意流量攻击的企……

    2026年5月12日
    4000
  • AIoT家电霸主是谁?智能家居设备哪个牌子好

    AIoT家电霸主并非单一品牌,而是由具备全屋智能联动能力、生态开放且算法迭代迅速的品牌共同构成的竞争格局,目前海尔智家、华为鸿蒙智家及小米米家凭借生态闭环占据市场主导地位,在2026年的今天,家电早已不再是孤立的硬件,而是家庭数据网络中的智能节点,消费者在选择时,不再单纯关注制冷或洗涤参数,而是看重设备能否融入……

    2026年6月14日
    3500
  • Excel所有行高怎么改?excel批量调整行高方法

    在Excel中调整所有行高最快捷的方法是使用“全选”功能配合“格式”菜单中的“行高”命令,或者利用“最适合的行高”功能让内容自动适配,从而避免手动拖拽的低效操作,很多职场人在处理Excel报表时,经常遇到行高不一致、内容显示不全或者打印时页面留白过多的问题,面对成千上万行的数据,逐个调整显然不现实,业内专家指出……

    2026年7月5日
    7800
  • iWFHosting美国VPS真的好用吗,美国vps云服务器推荐

    iWFHosting 提供极具性价比的美国 VPS 方案,$9.38/月即可起步,适合预算有限且追求稳定性的个人开发者与中小企业;若需更高性能,其美国独服 $49/月 起,配备 1-10Gbps 带宽,是业务扩展的理想选择,在云计算市场日益内卷的当下,寻找一款既便宜又稳定的美国服务器并非易事,许多用户往往在“低……

    2026年6月24日
    1610

发表回复

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