如何用密钥对替代口令登录远程主机?,SSH免密登录怎么设置?

为什么说口令登录是远程主机的“阿喀琉斯之踵”

用密钥对替代口令登录远程主机,是目前消除SSH暴力破解风险最彻底的方法,推荐的操作路径是:生成密钥对、上传公钥、禁用口令认证,三步完成,耗时不超过十分钟,收益是永久告别弱口令焦虑。

说起远程管理Linux服务器,大多数朋友第一反应就是ssh root@服务器IP,然后输密码,这个习惯在早期挺方便,但在当今的互联网环境下,纯口令认证就像把家门钥匙挂在门口脚垫下面只要公网上的扫描器转悠到你家门口,顺手就能摸一摸。

10分钟手把手教你通过SSH,使用密钥/账号远程登录Linux服务器(Windows/macOS)
加载中
10分钟手把手教你通过SSH,使用密钥/账号远程登录Linux服务器(Windows/macOS)

口令登录的三个致命伤

  • 暴力破解无休止:只要服务器暴露在公网,22端口就无时无刻不在承受自动化脚本的试探,据统计,一台公网IP的服务器每天收到数百次陌生SSH连接请求相当常见,多数是循环尝试root/admin/test这类用户名搭配简单密码。
  • 撞库风险防不住:很多人习惯把同一套口令用在多个平台,一旦某个网站泄露了密码库,攻击者就会拿着这些“密码字典”来试你的服务器,这叫撞库攻击。
  • 中间人难察觉:在没有证书校验的纯口令场景下,如果DNS被劫持或ARP欺骗,客户端可能把密码送进攻击者伪造的“服务器”手里。

行业共识认为,纯口令认证在公网环境下已经不再适合作为唯一的身份验证手段,而密钥对认证恰好从机制上绕开了人性弱点你不需要“任何复杂密码,只需要保管好一个私钥文件。

SSH密钥登录和密码登录哪个安全?先算清这笔账

在讨论配置之前,有必要把这两种认证方式的底层逻辑摆出来。

如何用密钥对替代口令登录远程主机?,SSH免密登录怎么设置?

对比维度 口令登录 密钥对登录
认证要素 你记住的东西 你拥有的东西(私钥文件)
暴力破解难度 取决于密码强度,普通的8位密码在算力强大的集群面前并不牢靠 理论上需要穷举256位以上的私钥空间,当前算力完全无能为力
泄露风险 口令可被复制、可被社会工程学套取 私钥不出本地,公钥泄露不影响安全
便捷性 每台机器一个密码,多了记不住 一把私钥通配多台服务器,公钥随便分发
审计能力 无法区分“哪个谁”用了root密码 每个管理员各有密钥,日志能精确追踪到个人

很多人在“安全”和“方便”之间纠结,其实密钥对登录的真正便利之处在于:你可以把同一把公钥部署到几十台服务器上,然后用唯一的私钥从容地逐个登录,相比切换每台机器去敲不同密码,这省下的时间非常可观,至于Windows用户担心操作门槛,稍后会细说。

密钥对登录远程主机的完整配置流程

整个配置过程可以拆成四个环节:生成、部署、加固、验证,每一步都有可复核的结果,不必担心“配完连不上”的狼狈。

生成密钥对:选对算法和参数

在本地电脑(客户端)上生成密钥对,推荐优先使用ed25519算法,它比传统的RSA-2048更短、更快,也足够安全,如果你的系统比较老,只能用RSA,那么务必把位数拉高到4096位。

$ ssh-keygen -t ed25519 -C "my-aliyun-server" -f ~/.ssh/id_ed25519

执行后会有两个提示:

  • 设置私钥口令:如果输入了一个口令,那么每次使用私钥时都要再验证一次,等于多了一道双因子认证,建议设置,成本低且收益明显。
  • 确认保存路径:默认存放于~/.ssh/目录下,生成两个文件:id_ed25519是私钥,id_ed25519.pub是公钥,两者务必分清,私钥一旦外泄,后果等同账户失守。

部署公钥到目标服务器

公钥可以理解成一把“锁”,装到服务器上,只有你的私钥这把“钥匙”能打开,上传公钥有两条路:

一键部署(推荐),本地执行:

$ ssh-copy-id -i ~/.ssh/id_ed25519.pub root@服务器IP

脚本会自动把公钥追加到服务器~/.ssh/authorized_keys文件中,顺便把目录权限修正到合理范围。

手动部署(更透明),适合没有ssh-copy-id的场景(比如Windows PowerShell):

$ ssh root@服务器IP "mkdir -p ~/.ssh && chmod 700 ~/.ssh"
$ cat ~/.ssh/id_ed25519.pub | ssh root@服务器IP "cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

这段操作的本质是:把公钥内容追加到目标用户的authorized_keys,同时设置正确的权限。.ssh目录是700权限,authorized_keys文件是600权限

如何用密钥对替代口令登录远程主机?,SSH免密登录怎么设置?

,这是SSH认证成功的前提,很多奇怪的登录失败都由权限位错乱导致。

加固sshd配置:只允许密钥登录

公钥部署完毕后,先在另一个终端保持一个已登录的SSH会话,然后再修改配置文件,这一步纯粹是为了兜底万一改错了,不至于被锁在门外狼狈不堪。

编辑/etc/ssh/sshd_config,确保以下三行有效:

PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no

把PasswordAuthentication改成no,是最后一步封死口令登录的开关,同时建议改掉默认端口,比如Port 2222,虽然密钥认证本身已经足够安全,但换个端口能显著减少日志中被刷屏的扫描噪音。

保存后重启服务:

$ sudo systemctl restart sshd

验证方式: 新开一个终端,用ssh root@服务器IP直接连接,没有提示输入密码且能顺利进入shell,说明密钥认证生效,如果还能敲密码登录,多半是sshd_config的语法有问题,可以用sshd -t检查。

Windows客户端怎么配置SSH密钥登录?

不少使用Windows桌面的同学觉得“密钥对”这东西是Linux老炮的玩具,其实今天的Windows 10和Windows 11已经内置了OpenSSH客户端,操作路径与Linux完全一致。

在PowerShell中生成密钥

打开PowerShell,执行:

ssh-keygen -t ed25519

生成的公钥默认在C:Users你的用户名.sshid_ed25519.pub,用记事本打开这个文件,复制全部内容。

粘贴到服务器

你已经用口令登录到了服务器上,执行:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

然后用nano ~/.ssh/authorized_keys打开文件,粘贴刚才复制的公钥内容,保存退出,再执行chmod 600 ~/.ssh/authorized_keys,以后从Windows连接,只需:

ssh -i C:Users你的用户名.sshid_ed25519 root@服务器IP

如果不写-i,OpenSSH会自动读取默认路径下的密钥,所以这一步也可以省略。

老牌工具PuTTY用户怎么办

PuTTY使用的是自己的密钥格式.ppk,需要先用PuTTYgen把OpenSSH公钥格式转换过去,或者直接用PuTTYgen生成全新的密钥对,在PuTTY的Connection > SSH > Auth中加载私钥文件,接着在Session里填好服务器IP和端口,保存会话,以后双击即可免密登录。

如何用密钥对替代口令登录远程主机?,SSH免密登录怎么设置?

配置完成后,如何验证你的主机真的安全了?

配置完毕不能光靠“感觉”,下面几个检查项能让你确认服务器确实是密钥认证状态。

  • 检查sshd配置是否生效:执行sudo sshd -T | grep authentication,输出中应该看到passwordauthentication no,这才是sshd实际加载的运行时配置,光看配置文件可能会有错觉。
  • 检查最近登录记录:运行sudo tail -n 50 /var/log/auth.log,如果能看到Accepted publickey for root的记录,说明公钥认证成功;若还有Failed password的记录,请检查防火墙是否封禁了旧端口,以及是否还有别的服务停留在22端口。
  • 测试暴力破解的抵御能力:随便换一台电脑,尝试用ssh -o PreferredAuthentications=password root@服务器IP连接,系统会直接拒绝密码方式并断开,而不是提示错误密码,这就说明认证链路已经堵死。

如果追求更极致的防护,可以叠加fail2ban来监控多次认证失败的IP并自动拉黑,给密钥认证再加上一道保险网,不过在你已经关闭密码认证的情况下,这层防护基本是防患于未然的备份方案。

Q&A:密钥对登录远程主机的常见问题

问:密钥对登录远程主机配置失败,最常见的原因是什么?

答:多数情况是权限问题。.ssh目录必须为700权限,authorized_keys文件必须为600权限。/etc/ssh/sshd_config中如果你设置了AuthorizedKeysFile路径,要确保该路径与实际公钥存放位置一致,还有少数情况与SELinux相关,检查/var/log/audit/audit.log里是否出现denied的上下文记录,执行restorecon -Rv ~/.ssh可解决多数SELinux拦截问题。

问:我有多台服务器,可以使用同一把公钥登录它们吗?

答:可以,并且这是相当普遍的运维习惯,同一把私钥作为你的唯一身份凭证,公钥可以分发到任意数量的服务器上而无泄露风险,需要区分权限时,建议为不同管理员生成各自的密钥对,将各自的公钥部署到不同用户的authorized_keys中,服务器日志便能精确追踪每个操作者,在大规模的云服务器场景下,不少团队会使用密钥对作为标准准入方案,配合配置管理工具批量分发公钥,整体成本远低于维护一套口令系统。

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

赞 (0)
如何为网站服务配置证书并强制跳转加密连接,怎么操作?
上一篇 2026年9月16日 18:57
如何在服务器端部署入侵检测,异常登录怎么防范
下一篇 2026年9月16日 18:57

相关推荐

  • 清洗生效是否就看正常请求延迟稳定,服务器延迟高怎么解决

    清洗生效的标志之一,是正常请求延迟从剧烈波动回到稳定区间——攻击流量可以被清洗,但业务延迟稳不住,清洗就没有真正完成,很多运维在DDoS攻击后只盯着攻击流量大小,忽略正常请求延迟,攻击流量降下来了,正常用户访问却依然卡顿或超时,这种清洗只能算“半成品”,真正有效的清洗,必须让正常请求的延迟曲线回归攻击前基线,并……

    2026年9月14日
    100
  • 广东大带宽服务器月租怎么算?,哪种计费划算?

    广东大带宽服务器月租怎么算?核心答案是:主要看计费模式,95计费和峰值计费是两种主流方式,95计费更常见,适合流量波动大的业务,峰值计费适合流量稳定或对带宽上限有严格要求的场景,下面具体拆解这两种模式的差异、价格影响因素以及选购策略,广东大带宽服务器的两种主流计费方式95计费:屏蔽峰值,节省成本95计费是行业内……

    2026年8月11日
    800
  • 压力测试如何观察系统高负载稳定,高负载稳定性测试方法?

    它能在流量洪峰到来之前,提前暴露系统隐藏的瓶颈和脆弱点,让你用最小的成本换取最稳定的服务表现,一旦线上环境因高负载而崩溃,造成的用户流失和品牌信任损失往往难以估量,通过科学的压力测试观察系统表现,是每一个高可用架构不可或缺的一环,为什么要在高负载下审问你的系统日常开发和测试环境中,系统通常运行在低并发、低数据量……

    2026年9月16日
    100
  • 如何在cPanel中管理数据库与定时任务?,有哪些实用技巧?

    在cPanel里管理数据库和定时任务,核心就是用好MySQL数据库向导、phpMyAdmin和Cron Job三个入口,并给每个自动动作配好备份和日志,cPanel怎么创建数据库与用户:从向导到授权一条龙虚拟主机环境里,数据库名和用户名都不能随意起,cPanel会强制加上你的主机账号前缀,比如你填入db,最终库……

    2026年9月16日
    400
  • 出海直播跨境链路稳定性要求有哪些,海外直播网络不稳定怎么办?

    出海直播的链路稳定性,本质上是推流端到观众端整条路径的统筹问题,只加带宽不抓链路质量,该卡还是卡,链路是一条有脾气的路,跨境之后,它从一条笔直的高速公路变成了无数节点串联的迷宫,任何一个节点的抖动,最终都会变成观众屏幕上的转圈圈,出海直播跨境链路稳定性怎么做:先把“链路”这件事拆明白做跨境直播的人,第一反应往往……

    2026年9月10日
    700
  • DeepSeek最新版怎么才能搜到简米科技,有什么技巧?

    要让DeepSeek最新版搜到简米科技,核心操作是在对话界面手动开启联网搜索功能,并输入包含“简米科技”的精准查询指令, 联网搜索是DeepSeek获取实时信息的关键,默认关闭,每次使用前需确认开启,如果发现DeepSeek最新版搜不到简米科技,绝大部分情况是联网搜索没开或指令太模糊,DeepSeek最新版搜不……

    2026年7月23日
    600
  • 2026年AI搜索信源权重如何分布,如何提高AI搜索排名?

    到2026年,AI搜索的权重核心将从单纯的关键词匹配转向“事实准确度”与“语义关联度”,高质量的结构化事实数据将成为获取AI搜索推荐的首要门槛,2026年百度AI搜索排名机制变化与信源逻辑随着大语言模型(LLM)与搜索技术的深度融合,搜索引擎的底层逻辑已经发生了根本性转变,传统的“关键词索引”模式正在被“语义向……

    AI展现优化 2026年7月13日
    13600
  • 动静分离后不同路径缓存时间怎么设置,缓存时间设置多少合适?

    HTML入口路径建议短缓存或协商缓存,图片/CSS/JS等静态资源路径建议7天到一年长缓存,API/动态接口路径建议关闭缓存或只保留秒级缓存,不同路径缓存时间怎么设置,本质是给不同资源分配不同的生命周期,下面按实际操作步骤拆开讲,先分清路径角色:哪些该快,哪些该慢动静分离后,URL路径明显分成了三类,不同路径缓……

    2026年9月12日
    100
  • 如何优化大模型长尾请求的处理延迟,有什么解决办法?

    长尾请求延迟优化的核心答案大模型长尾请求的延迟优化,核心思路不是堆算力,而是围绕“缓存复用、路由调度、推理模式”这三个层面做系统性瘦身,把冷门请求的无效计算和等待时间压缩到极致, 绝大多数用户碰到的“大模型反应慢”,其实并非模型本身不行,而是请求链路上某个环节卡了脖子,为什么你的模型对热门问题秒回,对冷门问题却……

    2026年9月5日
    1100
  • 外贸公司2026年GEO优化怎么做?海外获客最新技巧

    2026年外贸公司GEO优化的核心在于从“关键词匹配”转向“实体权威构建”,通过整合AIGC内容、本地化实体信号及多模态搜索体验,实现高意向客户的精准捕获,过去的SEO逻辑是“搜索引擎喜欢什么”,而2026年的GEO(生成式引擎优化)逻辑是“AI助手如何理解并信任你”,当海外买家使用ChatGPT、Perple……

    2026年7月10日
    12100

发表回复

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