服务器设置SSH用户名和密码的核心操作是:使用useradd创建用户、passwd设置密码,再修改/etc/ssh/sshd_config配置文件开启密码认证并重启SSH服务,过程只需几分钟。
很多初次接触云服务器的朋友容易在这个环节卡壳,要么忘记设置密码导致无法登录,要么改错配置文件导致SSH服务崩溃,下面我从零开始,把每一步的原理和操作拆开揉碎讲清楚,你会发现这件事远没有想象中复杂。
准备工作:连接服务器前的必备检查
开始操作前,手上必须有两样东西,第一样是服务器的IP地址,第二样是目前可用的登录凭证,比如初始密码、密钥对或控制台VNC登录权限。
行业共识认为,大部分云厂商(如简米云、酷番云、华为云)在购买服务器时都会让你设置root密码或下载密钥文件,如果你当时跳过了这一步,不用慌,可以直接去云服务商的控制台,找到”重置实例密码”功能,这在几分钟内就能搞定,不需要重装系统。
完成密码重置后,建议用终端工具快速测试网络连通性,打开你本机的命令行工具(Windows用PowerShell,Mac用Terminal),输入:
ping 你的服务器IP
如果能正常收到响应,说明网络通畅,可以继续下面的步骤,如果ping不通,优先检查云厂商的安全组策略,确认22端口已放行,这一步能帮你区分是网络问题还是配置问题,避免后面白折腾。
创建新用户并设置SSH密码
出于安全考虑,强烈不建议直接使用root账号通过SSH密码登录,root拥有最高权限,一旦密码泄露,服务器就等于完全暴露给了攻击者,下面教你怎么创建一个日常使用的普通用户,并给它设置密码。
通过命令创建用户
连接上服务器之后,依次执行下面几条命令,先创建用户,这里以用户名deploy为例:
useradd -m -s /bin/bash deploy
参数解释:-m自动创建用户家目录(/home/deploy),-s指定登录后使用的Shell为bash,如果你希望这个用户有sudo提权能力,把它加入wheel组或sudo组,不同系统命令略有区别,CentOS/Rocky Linux用:
usermod -aG wheel deploy
Debian/Ubuntu使用:
usermod -aG sudo deploy
为用户设置强密码
有用户账号,接下来就是设置密码,运行:
passwd deploy
系统会提示你输入两次新密码,输入过程中屏幕上不会有任何显示(连星号都不会有),这是正常现象,别以为是键盘坏了,密码设置要求有一定的复杂度,不要使用生日、手机号或简单的连续数字,建议长度不少于12位,混合大小写字母、数字和特殊符号。
验证新用户能否正常登录
打开一个新的终端窗口,执行:
ssh deploy@你的服务器IP
输入刚设置的密码,如果能够顺利登录并看到命令行提示符,说明账号密码设置已经成功了,这一步验证非常重要,能帮你确认密码没有输入错误,也能确认SSH密码认证已被系统允许。
修改SSH配置:让密码登录真正生效
如果你是刚刚用密码登录成功的,可以跳过这一步,但如果你发现即使密码设置正确,也无法用密码登录,通常是因为SSH服务默认禁用了密码认证,或者root登录被限制,这时需要手动修改配置文件。
了解sshd_config关键参数
SSH服务的配置文件位于/etc/ssh/sshd_config,用命令打开它:
sudo vim /etc/ssh/sshd_config
你需要关注的参数有这几个:
PasswordAuthentication:是否允许密码认证。yes表示允许,no表示禁止。PermitRootLogin:是否允许root用户直接登录。yes允许,no禁止,prohibit-password只允许密钥登录。PubkeyAuthentication:是否允许密钥认证。
在文件里找到这几行,如果行首有号,说明参数处于默认状态,你需要把它们修改成下面的样子:
PasswordAuthentication yes PermitRootLogin no
要注意的是,PermitRootLogin设为no后,root将无法通过SSH直接登录,你可以先用刚刚创建的deploy用户登录,再通过sudo来执行管理操作,这也就是前面建议你给deploy加sudo权限的原因。
重启SSH服务使配置生效
保存配置文件后,必须重启SSH服务才能让新配置生效,不同系统命令稍有区别:
# CentOS / Rocky Linux / Alibaba Cloud Linux sudo systemctl restart sshd # Debian / Ubuntu sudo systemctl restart ssh
重启服务前,建议先用下面的命令检查一下配置有没有语法错误:
sudo sshd -t
如果没有任何输出,说明配置文件语法正确,可以放心重启。不要在没有检查的情况下直接关闭当前SSH连接,以免配置错误导致下次无法登录,业内专家指出,大多数远程配置失误时的自救手段,都是依赖云厂商的VNC控制台,所以这个逃生通道要提前确认可用的。
云服务器ssh登录账号密码设置的常见场景与隐患
在”服务器怎么设置ssh用户名和密码”这个核心问题下,不同使用场景的操作路径略有差异,这里分别说明。
简米云/酷番云等云服务器首次登录
国内主流云厂商在创建实例时,都会让你选择登录方式,如果你的镜像是Linux,通常会有两个选项:密钥对登录和自定义密码登录。
选择了自定义密码,系统会要求设置一个8位以上的root密码,开箱后,直接通过客户端用root@IP加这个密码登录即可,但如果你选的是密钥对,系统默认会关闭密码登录,这时你需要用密钥登录进去,再按上面的方法打开密码认证。
需要提醒的是,部分云厂商的安全组默认只放行了ICMP(ping)和22端口,如果你修改了SSH默认端口(比如改成2222),记得同步修改安全组规则。
ssh root密码忘了怎么办
这是个高频问题,遗忘root密码不需要重装系统,有两套自救方案:
方案A:通过云厂商控制台重置。 在实例列表里找到目标服务器,点击”重置密码”,按提示设置新密码,然后重启实例,这个操作对所有的Linux发行版都有效,是最快的解决方案。
方案B:通过单用户模式重置。 如果控制台重置失败或服务器不在云上(比如物理机),可以重启服务器,在GRUB启动菜单界面按e进入编辑模式,找到linux16或linux开头的那一行,在末尾添加rd.break(CentOS系)或single(Debian系),进入紧急模式后用passwd root重置密码。
密钥登录和密码登录哪个安全
这不是一个非此即彼的问题,从纯技术角度看,密钥认证的强度远高于密码认证,因为密钥通常是2048位或4096位的非对称加密对,暴力破解的难度极大,密码认证则面临暴力枚举、撞库、键盘记录等多重风险。
但密钥也有短板,私钥文件如果不小心泄露(比如误上传到了Git仓库),攻击者拿到后就能直接登录服务器,妥善的做法是:日常使用密钥登录,同时保留密码认证作为备用方式,并在服务器上配置fail2ban之类的防护工具,限制多次尝试密码失败的IP。
验证与日常维护建议
配置完成后,建议做一次全面的验证,从本机执行:
ssh -v deploy@你的服务器IP
-v参数会输出详细的连接日志,如果最终出现了登录成功提示,说明整个链路没有问题,再执行sudo whoami,如果输出root,说明sudo提权也正常。
日常维护方面,有几个容易被忽略的细节,第一,密码要定期更换,建议每隔90天用passwd更新一次,更新后旧密码即刻失效,不影响已建立的连接,第二,如果你有多个服务器,不要在所有机器上使用同一套密码,否则一台被攻破等于全部沦陷,第三,修改SSH端口虽然不能从根本上提升安全性,但可以大幅减少扫描攻击的日志量。
常见问题快速解答
设置了密码但SSH登录提示Permission denied怎么办?
先确认你登录的用户名是否正确,如果用户名无误,那就是sshd_config中PasswordAuthentication仍为no,用VNC登录服务器终端,把该参数改为yes后重启SSH服务,另一个可能是/etc/ssh/sshd_config.d/目录下有其他配置文件覆盖了主配置,检查该目录下是否有带PasswordAuthentication no的conf文件。
如何禁止root用户通过密码直接登录?
在sshd_config中设置PermitRootLogin prohibit-password,这样root只能通过密钥登录,密码登录会被拒绝,同时确保你已有一个普通用户和sudo权限,否则你将无法执行管理命令。
核心结论很简单:先建用户、再设密码、最后确认sshd_config允许密码认证,重启服务后即完成全部设置,不要把root的密码认证和普通用户的密码认证混为一谈,前者是安全风险,后者是日常必需品。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/792424.html


