如何在服务器上添加客户端公钥,SSH免密登录怎么配置?

在服务器上添加客户端公钥的核心是通过将客户端生成的 .pub 公钥文件内容写入服务器目标用户家目录下的 .ssh/authorized_keys 文件中,从而利用非对称加密算法实现无需密码的身份验证。

为什么行业共识倾向于使用公钥认证替代密码登录

在运维实际场景中,依赖密码登录的服务器面临着极高的暴力破解风险,业内专家指出,针对 SSH 22 端口的自动化扫描攻击在公网环境下几乎是每秒都在发生。

linux配置ssh免密登录
加载中
linux配置ssh免密登录

密码登录与公钥认证的安全性对比

  • 密码登录:依赖于用户记忆的字符串,容易被弱口令攻击或通过截获流量(在未加密通道下)获取。
  • 公钥认证:基于 RSA 或 Ed25519 等非对称加密算法,私钥保存在客户端且永不传输,服务器仅持有公钥,即使公钥泄露,攻击者也无法在没有私钥的情况下伪造身份。

核心维度对比表

维度 密码登录 公钥认证 (SSH Key) 风险等级
验证机制 对比明文/哈希值 非对称加密签名验证 低 (公钥)
便捷程度 每次需手动输入 配置一次,永久免密 高 (效率)
破解难度 易受暴力破解/字典攻击 极难(需破解私钥) 极低
自动化支持 需第三方工具(如 expect) 原生支持脚本自动化 极高

Linux服务器添加SSH公钥步骤详解

实现免密登录的操作分为三个阶段:客户端生成密钥对、将公钥传输至服务器、验证连接。

如何在服务器上添加客户端公钥,SSH免密登录怎么配置?

客户端生成密钥对

在本地终端(Linux, macOS 或 Windows PowerShell)执行生成命令,目前行业推荐使用 Ed25519 算法,因为它比传统的 RSA 具有更高的安全性和更短的密钥长度。

  • 生成 Ed25519 密钥(推荐):
    ssh-keygen -t ed25519 -C "your_email@example.com"
  • 生成 RSA 密钥(兼容性强):
    ssh-keygen -rsa -b 4096 -C "your_email@example.com"

执行后,系统会提示保存路径,默认通常为 ~/.ssh/id_ed25519(私钥)和 ~/.ssh/id_ed25519.pub(公钥)。私钥必须严格保密,严禁上传至任何公共平台。

将公钥传输至服务器

传输公钥有两种主流方式,根据环境权限选择。

使用 ssh-copy-id 工具(最高效)

这是最推荐的自动化方式,它会自动处理目录创建和权限设置。

  • 执行命令:
    ssh-copy-id -i ~/.ssh/id_ed25519.pub username@server_ip
  • 执行逻辑:该工具会通过密码登录服务器,在 ~/.ssh/ 目录下创建文件夹,并将公钥内容追加到 authorized_keys 文件末尾。

手动复制粘贴(适用于受限环境)

如果服务器禁用了 ssh-copy-id 或处于特殊安全区域,可采用手动方式。

  • 步骤 1:在本地查看公钥内容:
    cat ~/.ssh/id_ed25519.pub
  • 步骤 2:登录服务器,创建目录并写入:
    mkdir -p ~/.ssh
    echo "粘贴刚才复制的公钥内容" >> ~/.ssh/authorized_keys

Ubuntu服务器配置SSH公钥免密登录教程

在 Ubuntu 或 Debian 等系统中,除了传输公钥,还需要确保服务器端的 SSH 配置和文件权限正确,否则 SSH 服务会出于安全考虑拒绝使用密钥登录。

严格的文件权限设置

SSH 守护进程 sshd 对权限检查极其苛刻,如果权限过高(如组用户可写),认证将直接失效。

  • 用户家目录:权限不能为 777,建议

    如何在服务器上添加客户端公钥,SSH免密登录怎么配置?

    755 或 700。

  • .ssh 目录:必须设置为 700 (drwx------)。
  • authorized_keys 文件:必须设置为 600 (-rw-------)。

快速修复权限命令:
chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys

修改 sshd_config 配置文件

需要确保服务器允许公钥认证,编辑配置文件 /etc/ssh/sshd_config:

  • 检查以下项是否为 yes:
    PubkeyAuthentication yes
  • 禁用密码登录(在确认密钥生效后执行):
    PasswordAuthentication no
  • 禁用 root 直接登录(增强安全):
    PermitRootLogin prohibit-password

修改完成后,必须重启 SSH 服务使配置生效:
sudo systemctl restart ssh

ssh-copy-id命令失效怎么办

在实际操作中,经常会遇到 ssh-copy-id 报错或执行后依然要求输入密码的情况。

常见失效原因分析

  • 服务器禁用了密码认证:如果服务器已经设置了 PasswordAuthentication no,则 ssh-copy-id 无法通过密码登录去上传公钥。
  • 权限不匹配:服务器端的 .ssh 目录权限被错误设置为 777。
  • SELinux 拦截:在 CentOS/RHEL 系统中,SELinux 可能会阻止 SSH 读取非标准路径的密钥文件。

解决方案路径

  • 针对密码禁用:通过云平台控制台的 VNC 终端手动将公钥写入 authorized_keys。
  • 针对权限问题:执行 chmod 700 ~/.ssh。
  • 针对 SELinux:尝试执行 restorecon -Rv ~/.ssh 恢复默认安全上下文。

进阶安全加固与多密钥管理

对于管理多台服务器的开发者,单一的密钥对可能不足以满足隔离需求。

使用 SSH Config 管理多台服务器

在本地 ~/.ssh/config 文件中定义别名,避免每次输入长 IP 和指定密钥路径。

如何在服务器上添加客户端公钥,SSH免密登录怎么配置?

Host web-server HostName 1.2.3.4 User deploy IdentityFile ~/.ssh/id_ed25519_web Host db-server HostName 1.2.3.5 User admin IdentityFile ~/.ssh/id_ed25519_db

配置后,直接使用 ssh web-server 即可自动匹配对应的私钥登录。

公钥认证与密码登录哪个更安全

从加密强度来看,公钥认证在数学层面远超传统的密码验证,据统计,绝大多数针对 SSH 的攻击是通过尝试常见密码组合实现的,公钥认证将攻击面从“猜测字符串”转移到了“破解 256 位或 4096 位加密密钥”,在目前的计算能力下,后者几乎是不可能的。

行业共识认为,生产环境的服务器应当在完成公钥部署后,立即关闭密码登录功能,仅保留密钥认证,这是构建基础安全防线的底线要求。

在服务器上添加客户端公钥是提升运维效率与安全性的标准操作,其核心流程为:本地生成 Ed25519 密钥 $rightarrow$ 通过 ssh-copy-id 或手动方式将公钥写入服务器 authorized_keys $rightarrow$ 严格限制 .ssh 目录权限为 700 $rightarrow$ 关闭 sshd 密码认证。

关于服务器添加客户端公钥的常见问题 Q&A

问:一个服务器用户可以添加多个客户端公钥吗?

答:可以。authorized_keys 文件支持多行存储,每行代表一个公钥,你可以将不同开发者的公钥依次追加到该文件中,服务器在验证时会依次匹配,只要客户端持有其中任何一个对应的私钥即可登录。

问:如果私钥丢失了,还能通过公钥登录吗?

答:不能,公钥仅用于验证,私钥用于签名,如果私钥丢失且服务器关闭了密码登录,你将彻底失去该用户的 SSH 访问权限,此时必须通过云平台控制台的救援模式或 VNC 终端登录,手动删除或更换 authorized_keys 中的公钥。

问:公钥和私钥在传输过程中可以互换吗?

答:绝对不可以,公钥(Public Key)是公开的,可以随意发送给任何服务器;私钥(Private Key)必须严格保存在本地且不被任何人知晓,如果将私钥上传至服务器,一旦服务器被攻破,攻击者将获得该私钥并能以此身份访问所有信任该私钥的其他服务器。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/%e5%a6%82%e4%bd%95%e5%9c%a8%e6%9c%8d%e5%8a%a1%e5%99%a8%e4%b8%8a%e6%b7%bb%e5%8a%a0%e5%ae%a2%e6%88%b7%e7%ab%af%e5%85%ac%e9%92%a5%ef%bc%8cssh%e5%85%8d%e5%af%86%e7%99%bb%e5%bd%95%e6%80%8e%e4%b9%88/

赞 (0)
Fluent Python这本书值得读吗,Python进阶书籍推荐有哪些?
上一篇 2026年7月12日 20:11
网站cdn查询怎么做?如何快速检测网站正在使用的CDN服务商?
下一篇 2026年7月12日 20:13

相关推荐

  • IIS如何禁止通过IP访问网站,IP限速怎么设置?

    在IIS服务器上,通过IP地址和域名限制功能可以禁止直接通过IP访问网站,同时借助动态IP限制模块或URL重写规则实现IP限速,从而有效控制访问频率,这是保护网站安全、防止资源滥用的关键手段,IIS禁止通过IP访问网站的具体操作步骤很多站长在配置完网站后,发现直接输入服务器IP也能访问,这不仅带来安全隐患,还可……

    2026年8月13日
    500
  • IPv4客户端咋访问IPv6服务器?,IPv6地址转换方法?

    IPv4客户端访问IPv6服务器、IPv6客户端访问IPv4业务,本质上都是协议栈不互通的问题,解决思路只有一条:让一方在地址层面“翻译”成另一方认得的格式,现实中用得最多的翻译工具是双栈、NAT64/DNS64组合和反向代理,选哪个取决于你的资源情况和业务类型,为什么IPv4和IPv6互通成了绕不开的坎?IP……

    2026年8月20日
    1000
  • 开源AI大模型到底有啥用?开源AI大模型有哪些应用场景

    开源AI大模型的核心作用在于打破技术垄断,让中小企业和个人开发者能以极低成本构建专属智能应用,实现从“通用聊天”到“垂直场景落地”的关键跨越,开源AI大模型如何重塑技术门槛与成本结构过去,想要使用顶尖的人工智能能力,企业必须依赖少数几家科技巨头的API接口,这种模式虽然便捷,但数据隐私难以保障,且随着调用量增加……

    2026年6月14日
    3400
  • 服务器如何读取客户端文件?服务器读取本地文件方法

    服务器无法直接读取客户端文件,核心原因在于浏览器沙箱机制严格隔离了本地文件系统,必须通过前端上传接口将文件传输至服务器后端进行存储和处理,为什么服务器碰不到你的本地文件很多人误以为只要用户在网页上点击按钮,服务器就能顺手把电脑里的文档拿过来,这种想法在早期的互联网时代或许存在,但在现代Web架构中,这是绝对的安……

    2026年7月4日
    12300
  • 服务器一般怎么维修?服务器维修费用及流程详解

    服务器作为企业数据中心的“心脏”,其维护工作通常分为预防性维护(日常巡检)、故障性维修(硬件更换)和系统性维护(软件/配置优化),以下是服务器常见的维修与维护内容分类详解:硬件层面的维修与更换这是最直观的“维修”部分,通常由硬件厂商(如 Dell, HPE, Lenovo)或专业运维人员执行,硬盘(HDD/SS……

    2026年7月11日
    3400
  • it运维管理市场分析_运维管理

    最近几年,运维圈子里聊得最多的不再是“服务器又挂了怎么办”,而是“怎么让系统自己别挂”,IT运维管理正从被动救火,转向以数据驱动的主动治理与自动化运维,2026年的市场分水岭不在工具数量,而在谁能把AI用进日常巡检和故障预测里,IT运维管理市场分析:增长动力来自哪里数字化转型倒逼运维边界扩张以前IT运维管的是机……

    2026年8月17日
    400
  • 大模型如何实现可持续发展?大模型未来发展趋势

    大模型的可持续发展核心在于平衡算力能效、数据伦理与商业闭环,通过绿色计算架构、合规数据治理及可解释性技术,实现从“高耗能消耗”向“高效能服务”的转型,算力能效优化:降低大模型碳足迹的实操路径随着参数规模突破万亿大关,训练和推理过程中的能耗问题已成为行业痛点,业内专家指出,能源效率已不再是单纯的环保指标,而是决定……

    2026年6月20日
    2800
  • iis批量建站助_安装IIS

    做iis批量建站助_安装IIS这件事,核心结论是:先装好IIS再谈批量,Windows Server 2008/2012/2016的安装路径差异不大,按本文步骤走十分钟内能完成,作为常年和服务器打交道的运维人员,我见过太多人栽在第一步,iis批量建站工具再强大,也得寄生在IIS这个宿主上,这篇文章就把iis批量……

    2026年8月11日
    600
  • 如何通俗理解ai大模型?ai大模型对普通人有什么影响

    AI大模型本质上是基于海量数据训练出的、具备概率预测能力的通用人工智能底座,它不是简单的搜索引擎或数据库,而是能理解语境、生成内容并辅助决策的“数字大脑”,AI大模型的核心逻辑与底层原理很多人对AI大模型存在误解,认为它像是一个装了超级硬盘的搜索引擎,只要输入问题就能从互联网上抓取现成答案,这种理解停留在202……

    2026年6月15日
    2900
  • 如何在VPS上安装IIS?,安装步骤有哪些?

    在VPS上安装IIS是搭建Windows环境网站的核心步骤,通过服务器管理器添加角色功能即可完成,整个过程约需10分钟,且无需额外费用,VPS安装IIS前的准备工作选择一台合适的VPS是成功安装IIS的前提,国内多数云服务商提供的Windows Server实例均支持IIS,系统版本建议选择Windows Se……

    2026年8月6日
    800

发表回复

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