新闻详情

新闻详情

首页 / 资讯中心 / 详情

华为云CentOS服务器密钥登录配置指南:从创建密钥对到禁用密码登录

发布时间:2026/9/24 22:21:30来源:尧图网络
华为云CentOS服务器密钥登录配置指南:从创建密钥对到禁用密码登录
1. 为什么说密钥登录是华为云CentOS服务器的标配我接触华为云的ECS服务器有好几年了从最早的密码登录到后来的密钥登录中间踩过不少坑也帮不少朋友排查过登录问题。今天就把密钥方式登录CentOS这件事从头到尾捋一遍包括为什么要用、怎么做、遇到问题怎么排查一次性讲透。先把结论放在前面密钥登录不是可选项而是上生产环境的必选项。尤其是公网IP直接暴露的服务器如果还开着密码登录被暴力破解只是时间问题。我见过太多因为密码太弱或者干脆用默认密码导致服务器被入侵的案例轻则被挖矿重则数据被删、网站被挂马。而密钥登录用的是非对称加密私钥在你手里别人没有私钥就算知道IP也登不进来安全性和密码完全不是一个量级。这篇内容适合谁看如果你是刚接触华为云的运维新手第一次创建CentOS云服务器遇到密钥生成、权限配置这些问题搞不明白那这篇能帮你少走很多弯路。如果你已经用密码登录跑了一段时间打算切换到密钥认证那这篇同样适用。我会把从创建密钥对到禁用密码登录的完整链路都讲清楚包括那些官方文档里一笔带过但实际特别容易踩坑的细节。整个方案的核心思路其实不复杂华为云负责生成和管理密钥对公钥放在云服务器上私钥保存在你本地。你拿私钥去跟服务器“对上暗号”成功就放行。相比密码密钥长度和随机性都远超人为设定的密码暴力破解几乎不可能。再加上可以追加配置禁用密码登录等于把攻击者的门彻底焊死。下面我从操作链路开始逐步拆解每一步的原理和实操要点。2. 准备工作创建密钥对与购买CentOS ECS2.1 在华为云控制台创建密钥对登录华为云控制台之后路径是“控制台 - 弹性云服务器 ECS - 密钥对”。进入密钥对管理页面点击“创建密钥对”会让你填一个名称比如我习惯用“prod-keypair-01”这种带环境标识的命名方式方便后期管理。创建方式有两种一种是平台自动生成一种是导入已有公钥。如果是第一次使用建议直接选平台自动生成它会下载一个.pem格式的私钥文件到本地。这里有个极其重要的点这个私钥文件只在创建时下载一次平台不会保留一旦丢了就再也找不回来。我建议下载后马上放到一个专门的目录比如~/.ssh/huawei/下面同时做好备份可以放到加密U盘或者密码管理器里。创建完成之后密钥对列表里会显示公钥指纹这个指纹是一串SHA256哈希值后面登录的时候可以用来核对是否匹配避免连到错误的机器。2.2 购买ECS时的密钥绑定购买ECS的流程就不赘述了重点说登录方式这一步。华为云购买页面会要求选择登录凭证如果你在前面已经创建了密钥对这里直接选“密钥对”然后下拉选择刚才创建的密钥对即可。如果购买的时候选了密码登录后面想换成密钥认证也不用重装系统。有两种途径补绑定一种是在ECS实例列表的操作菜单里找到“重置密码/密钥”另一种是先在密钥对页面点“绑定服务器”再在服务器详情里确认。我个人经验是后者在某些页面上绑定后需要一段时间才生效最稳妥的还是购买时直接绑定。系统类型选CentOS的话目前华为云市场提供的CentOS 7.9和CentOS Stream系列都支持密钥登录。要注意的是CentOS 7.9从2024年6月30日开始EOL停更了新业务我建议直接上CentOS Stream 9或者切到其他兼容发行版。但本文的密钥登录流程在两个版本上几乎没有差别只是包管理器可能有细微差异。2.3 准备好本地SSH客户端本地客户端怎么选如果你用的是Linux或macOS终端里自带ssh命令什么都不用额外装。Windows的话我建议用Xshell或PuTTY也可以直接用PowerShell 7自带的OpenSSH客户端。各有利弊Xshell界面友好支持密钥管理但个人版免费商业版收费。实测个人版功能完全够用。PuTTY免费开源但私钥格式需要转换Windows下要用PuTTYgen把.pem转换成.ppk这一步容易劝退新人。Windows PowerShell自带的ssh命令不需要额外安装如果能习惯命令行这是最省事的选择。我自己长期用Xshell同时也会用PowerShell做快速连接测试。两条路都走得通看个人习惯。3. 核心细节密钥认证的原理与配置要点3.1 非对称加密在SSH登录中的角色理解密钥登录核心是理解非对称加密。简单说配对的公钥和私钥就像一把特制的锁和钥匙公钥是锁可以随便放在服务器上私钥是钥匙只能放在你手里。用公钥加密的数据只有对应的私钥能解开反过来也一样。SSH登录时发生了什么你的客户端向服务器发起连接服务器发来一段用公钥加密的随机数据客户端用私钥解密后回传一个特定标识服务器验证通过就放行。整个过程私钥永远不出本地所以就算服务器被攻破攻击者拿到的也只是公钥拿不到解锁能力。为什么要设计成这样因为登录行为不再是“猜密码”而是“验证身份”。密码理论上可以被穷举但一把4096比特的私钥穷举到宇宙毁灭都试不完。这就是为什么业界共识是暴力破解是对着钥匙库硬试而不是对着锁研究怎么撬。3.2 authorized_keys文件与权限要求密钥登录的核心配置文件在CentOS服务器上是~/.ssh/authorized_keys。当SSH服务收到带密钥的连接请求时会去用户主目录下找这个文件看看请求方持有的私钥是否对应当前用户授权的公钥。有个细节容易被忽略公钥是一行一行的文本每行一个授权公钥。格式是ssh-rsa AAAA... userhostssh-rsa是算法标识中间那段是Base64编码的公钥主体最后是注释。你在华为云控制台密钥对详情页也能看到公钥内容格式和这个一致。权限要求极其严格任何一个权限放太宽都会导致SSH直接拒绝使用密钥。我遇到过很多次用户说“我明明配置了authorized_keys怎么还是不行”一查基本都是权限问题。.ssh目录权限必须是700drwx------authorized_keys文件权限必须是600-rw-------所属用户必须是你登录的那个用户不能是root也不能是别的用户如果不小心把.ssh目录设成了755SSH会认为任何人都可以篡改密钥文件出于安全考虑直接跳过密钥认证。修复方法chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys3.3 SELinux对密钥登录的影响CentOS默认开着SELinux这东西经常被忽略但它在某些特殊情况下会干扰SSH读取authorized_keys。正常情况下只要~/.ssh目录在用户主目录下且标注正确SELinux不会拦。但如果你的主目录挂载比较特殊比如放在独立数据盘或者手动改了home目录SELinux上下文可能就不对了。遇到这种情况可以先用ls -Z ~/.ssh查看上下文正常应该是unconfined_u:object_r:ssh_home_t:s0。如果不对可以重置restorecon -Rv ~/.ssh这个命令会恢复.ssh目录的默认SELinux上下文。大部分情况下跑了这行命令就能解决。3.4 排查SSHD配置中的关键参数/etc/ssh/sshd_config是SSH服务的总开关几个参数直接关系密钥登录的成败PubkeyAuthentication yes必须开启默认是yes但如果之前有人改过会变成no那无论你公钥配得多正确都没用。AuthorizedKeysFile .ssh/authorized_keys指定公钥存放位置一般保持默认。PermitRootLogin yes如果你想用root用户直接密钥登录需要确保这里是yes或者prohibit-password。prohibit-password表示禁止root用密码登录但允许密钥登录这是更安全的选择。PasswordAuthentication no这是最后一步关闭密码登录时改的参数在还没确认密钥能成功登录前不要动它否则容易把自己锁在外面。改完配置记得重启服务systemctl restart sshd或者优雅重载systemctl reload sshd重载不会断开现有连接适合线上环境操作。4. 实操过程从华为云绑定密钥到CentOS成功登录4.1 方案A通过华为云部署脚本注入公钥华为云在创建ECS时可以指定一个部署脚本官方叫法是一段初始化配置但你完全可以把它当成后门。用下面的脚本可以自动创建用户、配置密钥、设置权限#!/bin/bash # 创建新用户并配置公钥登录 USERNAMEopsadmin PUBKEYssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQ... your-key-comment # 创建用户 useradd -m -s /bin/bash $USERNAME # 创建.ssh目录 mkdir -p /home/$USERNAME/.ssh # 写入公钥 echo $PUBKEY /home/$USERNAME/.ssh/authorized_keys # 设置权限 chown -R $USERNAME:$USERNAME /home/$USERNAME/.ssh chmod 700 /home/$USERNAME/.ssh chmod 600 /home/$USERNAME/.ssh/authorized_keys # 将用户加入wheel组获得sudo权限 usermod -aG wheel $USERNAME # 可选允许opsadmin用户的SSH密钥登录禁用该用户密码 passwd -l $USERNAME这个方案的好处是服务器一启动公钥就已经就位你直接用私钥就能登录不用先输密码进去再手动配置。注意脚本里的公钥要替换成你自己的而且passwd -l这一步慎用如果你想保留密码登录备用就别执行最后一行。4.2 方案B已有服务器手动配置密钥登录如果你服务器已经用密码登录在跑了那就先连上去然后执行以下步骤第一步检查当前用户whoami确认你在哪个用户下密钥要配置到这个用户的主目录才能生效。如果你想给root配那就要在/root/.ssh/下操作如果是普通用户在/home/你的用户名/.ssh/下操作。第二步创建.ssh目录并设置权限mkdir -p ~/.ssh chmod 700 ~/.ssh cd ~/.ssh第三步获取公钥内容并写入authorized_keys如果你用的是华为云控制台下载的.pem私钥文件对应的公钥可以在华为云“密钥对”页面复制。如果没有保存公钥文本可以自己在本地从私钥推导公钥# 在本地Linux/macOS执行从私钥提取公钥 ssh-keygen -y -f /path/to/your-key.pem会输出一行公钥文本复制输出内容粘贴到服务器上执行echo 刚才复制的公钥内容 ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys第四步验证密钥登录保持当前SSH会话不要关闭新开一个终端窗口用密钥方式连接ssh -i /path/to/your-key.pem root你的服务器公网IP如果第一次连不上加上-v参数看详细日志ssh -i /path/to/your-key.pem -v root你的服务器公网IP日志里会出现类似“Authentication succeeded (publickey)”的字样看到这个基本就说明配置成功了。4.3 Windows客户端的具体配置在Windows上Xshell的配置流程是新建会话主机填IP端口默认22认证方法选“Public Key”然后选择导入本地私钥文件。Xshell可以直接加载.pem格式的私钥不需要转换这一点比PuTTY省事。如果用PuTTY你得先用PuTTYgen做格式转换打开PuTTYgen点“Load”文件类型切换为“All Files”选中.pem文件它会提示成功导入然后点“Save private key”保存为.ppk文件。最后在PuTTY的Connection - SSH - Auth里选择这个.ppk文件。PowerShell的用法和Linux差不多只要本地装了OpenSSH客户端直接ssh -i C:\Users\你的用户名\.ssh\huawei-key.pem root服务器IPWindows下私钥文件的权限偶尔会导致ssh命令拒绝使用提示“UNPROTECTED PRIVATE KEY FILE”。解决办法是右键私钥文件 - 属性 - 安全 - 高级 - 禁用继承 - 删除所有继承的权限然后添加当前用户的完全控制权限。这个操作用图形界面就能完成不复杂但没有经验的话光看到报错就会懵。4.4 参数选择的建议关于密钥长度华为云平台生成默认是2048位的RSA密钥。2048在目前安全性是够用的但如果追求更高安全性可以在本地生成4096位的密钥对再导入公钥到平台。命令如下ssh-keygen -t rsa -b 4096 -f ~/.ssh/huawei-ecs-01 -C prod-ecs-01参数说明-t rsa指定算法类型-b 4096指定位数-f指定生成的密钥文件路径-C指定注释方便后期识别。另外CentOS 8及以上版本默认还支持ed25519算法。这种算法生成的密钥更短、性能更好、安全性也足够。如果客户端和服务端都支持CentOS 7.9以上的OpenSSH版本基本都支持完全可以考虑ssh-keygen -t ed25519 -f ~/.ssh/huawei-ecs-01 -C prod-ecs-01我个人测试下来ed25519在登录时的握手速度略快于RSA在低配ECS上体感更明显。不过要确认服务器ssh版本不低于6.5CentOS 7自带的OpenSSH 7.4已经支持了所以不用担心。5. 安全加固与常见故障排查5.1 确认密钥登录成功后再关闭密码认证安全加固的最后一步才是关闭密码登录。在/etc/ssh/sshd_config中找到这一行#PasswordAuthentication yes把它改成PasswordAuthentication no然后重载服务systemctl reload sshd这一步一定要在密钥登录已经验证成功之后再做。我强烈建议你在执行之前先开一个额外的SSH会话保持登录状态然后才去改配置和重载。万一密钥有问题你至少还有活着的会话可以回滚配置不至于把自己锁在门外。禁用密码登录之后所有从公网进来的SSH请求只能靠密钥认证暴力破解工具面对你基本就是废的。不过要注意如果你某些时候确实需要密码登录比如通过华为云控制台的VNC连接方式那是走的管理后台通道不受sshd_config限制不受影响。5.2 私钥权限问题导致的连接失败私钥文件在本地端也有权限要求。Linux/macOS下,私钥文件权限必须是600或者400如果权限过宽OpenSSH客户端会直接拒绝使用Permissions 0644 for /home/user/.ssh/your-key.pem are too open.解决方法chmod 600 /home/user/.ssh/your-key.pemWindows下的PowerShell同样有这个问题处理方法上面提到过核心就是只保留当前用户的访问权限。5.3 连接超时与安全组配置如果你用密钥登录时卡在Connection timed out那基本可以确定是网络层的连接根本没到达服务器。最常见的元凶是华为云安全组没有放行TCP 22端口。进入ECS实例详情页找到“安全组”选项卡点入对应的安全组规则添加入方向规则协议TCP端口22来源建议只用你办公出口的固定IP段不要图省事填0.0.0.0/0。很多安全事故都是因为把22端口对全网开放再加上密码登录没关等于门户大开。在安全组规则生效前可以用ping和telnet快速判断ping 服务器IP telnet 服务器IP 22telnet能连上说明网络通连不上说明安全组问题或服务器防火墙拦截。CentOS默认防火墙firewalld也可能挡22端口检查命令firewall-cmd --list-all如果22端口不在列表中执行firewall-cmd --permanent --add-servicessh firewall-cmd --reload5.4 SSH连接被拒绝或没有匹配的key类型有时候你拿私钥去连服务器直接回Permission denied (publickey,gssapi-keyexch,password)这种提示一般分两种情况。第一种情况是公钥没配对。先检查你用的是不是正确的私钥是否对应在服务器上配置的公钥。可以用ssh-keygen -y -f 私钥文件生成公钥再和服务器上authorized_keys里的公钥文本做比对看是否一致。第二种情况是SSH客户端和服务端支持的密钥算法不匹配。新版OpenSSH默认禁用了ssh-rsa签名算法而CentOS 7.9的系统SSH如果版本较老可能还在用RSA密钥认证。这时候在客户端连接命令里显式指定算法ssh -i 私钥文件 -o PubkeyAcceptedAlgorithmsssh-rsa root服务器IP如果这样能连上说明是算法兼容性问题可以在本地SSH配置文件~/.ssh/config里追加Host 服务器IP PubkeyAcceptedAlgorithms ssh-rsa不过这是临时方案更推荐的还是把服务器的OpenSSH升级到新版本或者改用ed25519密钥。新的密钥算法一劳永逸不用和旧客户端做兼容。5.5 常见问题速查表现象可能原因解决思路加载私钥时报权限过宽错误本地私钥权限过高chmod 600私钥文件登录时直接被拒绝无任何提示公钥未正确写入authorized_keys检查公钥内容、比对指纹能连上但一直要密码PubkeyAuthentication没开检查sshd_config重启sshd连接超时安全组或firewalld未放行22检查安全组规则、firewalld状态密钥有效但是PermitRootLogin限制root登录被限制设置PermitRootLogin prohibit-password使用PuTTY加载.pem失败私钥格式需要转换用PuTTYgen转换为.ppkXshell加载私钥报格式错误私钥是OpenSSH格式需转换或直接支持更新Xshell版本或转换格式修改sshd_config后重启失败配置语法错误执行sshd -t 检查语法然后重新reload这个表格是我在实际支持中不断补充出来的命中率非常高。遇到问题先对照这个表排查大多数情况不需要看SSH日志就能解决。如果还不行就去翻/var/log/securetail -f /var/log/secureCentOS下SSH的所有认证日志都记在这里能看到具体是哪一步校验失败信息量非常足。5.6 意外锁死后的应急恢复路径如果你真的把密码认证关了然后私钥又突然找不到会出现最惨的锁死局面。华为云控制台提供一个VNC登录入口在ECS实例的操作菜单里选择“远程登录”可以绕过SSH直接在网页上打开服务器的控制台。通过VNC进去用密码登录前提是你还有Linux用户密码然后修复配置或者重新生成密钥。如果你的密码也忘了华为云控制台支持“重置密码”操作重置后通过VNC登录再重新配置。所以真正的应急路径是VNC 重置密码。务必记住这两招关键时刻能救命。6. 多服务器场景下的密钥管理与使用技巧6.1 用一个密钥对管理多台ECS如果你有多台CentOS ECS完全可以复用同一个密钥对。在华为云密钥对页面点“绑定服务器”勾选想要绑定的多台ECS实例即可。公钥会自动分发到每台机器对应的authorized_keys文件里。这个方案的优点就是省事一把钥匙开多把锁。缺点也很明显一旦私钥泄露所有服务器都得同时换密钥。所以我建议在测试环境或者低敏感集群里这么做生产环境还是每台机器独立密钥对更稳妥或者至少按业务模块分组使用不同密钥。6.2 SSH config让连接命令变得极简如果你每天要连好几台机器每次输入ssh -i /path/to/key userIP太啰嗦了。在本地配置~/.ssh/config文件可以给服务器起别名Host ecs-prod-01 HostName 123.123.123.123 User root IdentityFile ~/.ssh/huawei-prod-01.pem Port 22 ServerAliveInterval 60 Host ecs-test-01 HostName 45.45.45.45 User opsadmin IdentityFile ~/.ssh/huawei-test-01.pem Port 22配置好之后连接只需要ssh ecs-prod-01简洁到令人舒适。而且ServerAliveInterval 60的作用是每60秒发一个心跳包防止长时间不操作被中间设备掐断连接。这个参数我实际用下来尤其在移动网络环境下效果非常明显。6.3 私钥本身的安全管理私钥就是你服务器的命脉保管私钥的关键原则是用不随身带存不随便放。我的做法是私钥文件放到~/.ssh/下权限600同时把一份加密备份放到离线U盘里再用密码管理器存一份私钥内容的备份。可以的话给私钥本身设置一个口令passphrase这样就算文件被偷走没有口令也解不了私钥。生成密钥时如果设置了passphrase每次连接需要输入一次可以用ssh-agent记住会话内的口令避免反复输入eval $(ssh-agent -s) ssh-add ~/.ssh/huawei-prod-01.pem另外强烈建议开启华为云控制台的“操作保护”和“多因素认证”这样就算你的控制台账号密码泄露了别人也无法通过控制台对服务器做危险操作比如重置密钥、变更安全组等。6.4 定期轮换与吊销密钥安全习惯再好也要做好密钥轮换的预案。建议每半年到一年对生产环境执行一次密钥轮换创建新的密钥对绑定到服务器在authorized_keys里同时保留新旧公钥各一行确认新密钥能登录后从authorized_keys里删除旧公钥行最后在华为云平台删除旧的密钥对。如果某个团队成员离职第一时间要做的就是把该成员曾经用过的公钥从所有服务器的authorized_keys里移除。批量操作时可以写一个循环脚本在一组服务器上统一执行比一台台登录手动改高效得多。7. 我的一些经验与建议做了几年云服务器运维我最深的体会是登录方式这种看似最简单的环节反而是安全事故的高发地带。很多人每天都在关注上层的业务代码、数据库性能却忽略了下层这扇门到底锁没锁好。密钥登录这个动作本身不难但它背后代表的安全意识和运维习惯才是真正值钱的东西。如果你刚买了华为云CentOS服务器我建议在当天就完成密钥登录的配置并把密码登录关掉。趁着环境干净配置过程最简单。不要等到业务已经跑起来、忘了当时的账号密码、也不确定系统里有没有被植入后门的时候才想起来要弄安全加固那时候的复杂度会比现在高好几个量级。另外一个小建议线上操作尤其涉及SSH配置这类可能把自己锁在外面的变更一定要保留一条后路。要么保持当前会话不退出要么提前确认VNC接入方式可用。这个习惯我吃了好几次亏才养成的现在写进自己的变更检查清单里了也分享给大家。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

n8n高危漏洞致服务器被完全控制?攻击链拆解与防御加固指南 2026/9/24 23:07:46

n8n高危漏洞致服务器被完全控制?攻击链拆解与防御加固指南

前几天帮一个做跨境电商的团队排查服务器异常,云厂商后台的告警消息一条接一条:CPU飙到 90%,/tmp 目录下出现一堆可疑的 shell 脚本,数据库里还多出了几个陌生的管理员账号。查了两个多小时,最后定位到根因出在他们部署…

阅读更多 →
RAG 实战全链路:从文档切块到检索生成的避坑指南 2026/9/24 23:07:46

RAG 实战全链路:从文档切块到检索生成的避坑指南

RAG 这个词,从 2023 年火到现在,几乎成了 Agent 开发的必修课。但我在带团队和看社区提问时发现一个很普遍的现象:很多人能把 LangChain 的RetrievalQA链跑通,Demo 里问一句答一句看着挺像回事,可一旦换成自己的业务文…

阅读更多 →
国产工业数字全栈平台:打破数据孤岛的工控实践与选型指南 2026/9/24 23:07:46

国产工业数字全栈平台:打破数据孤岛的工控实践与选型指南

工控圈的微信群最近被一个词刷屏了:“首个国产工业数字全栈平台”。干了十多年自动化,我对“XX平台”“XX中台”这类词早就免疫了,但这次还是多看了几眼。原因很简单——它把“工控”和“数字全栈”放到了一起。懂行的人知道,这两…

阅读更多 →
AI语义分段引擎:从长视频到可编辑时间线的自动剪辑实践 2026/9/24 23:07:46

AI语义分段引擎:从长视频到可编辑时间线的自动剪辑实践

做视频剪辑这行,素材一多,最耗时的不是“剪”,而是“找”。对着两个小时的访谈录像,拖进度条拉到怀疑人生,就为了找一个三秒钟的眼神特写。我从去年开始折腾AI分段引擎,就是为了把这段“找素材”的时间压缩…

阅读更多 →
王阳明心学实操指南:从“心即理”到“致良知”的现代应用 2026/9/24 23:07:46

王阳明心学实操指南:从“心即理”到“致良知”的现代应用

王阳明心学这几年是真的火,从企业高管的床头书到普通打工人的通勤读物,几乎成了“东方哲学”的代名词。但说实话,很多人翻完《传习录》就一个感觉:字都认识,道理好像也懂,可真到了事儿上,什么“…

阅读更多 →
工控圈新秀:国产工业数字全栈平台技术解析与落地实践 2026/9/24 23:07:39

工控圈新秀:国产工业数字全栈平台技术解析与落地实践

1. 为什么工控圈这次这么关注“新秀”1.1 先说清楚:工业数字全栈平台是个什么物种做自动化这一行久了,朋友圈每隔一阵就会冒出一个新概念。前几天最热闹的一条消息,是工控圈来了个国产工业数字全栈平台,而且前缀带了“首个”两个字…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞