刚上手 Linux 服务器的新手,是不是遇到过这种情况:密码输得明明白白,ssh 连接时却跳出 “拒绝连接”,试了十几次都没用,急得想砸键盘?做开发的小郑就卡过这关,他明明记得密码没错,可 ssh root@服务器 IP 就是连不上,最后发现是 ssh 服务压根没启动。其实啊,密码对却被拒绝,问题往往不在密码上,多半是服务器的设置或服务出了小岔子。今天就说说遇到这种情况该怎么排查,步骤简单,新手跟着做就行,一起往下看吧!
先查最基础的:ssh 服务是不是没开?
你可能不知道,Linux 服务器上的 ssh 连接,得靠 “ssh 服务” 这个程序运行着才行,就像开门得先有钥匙孔。要是服务没启动,再对的密码也没用。
怎么检查?
- 如果你能直接摸到服务器(比如机房的物理机),或者通过控制台登录(云服务器有这个功能),输入命令 “systemctl status sshd”,看看是不是 “active (running)” 状态;
- 要是显示 “inactive (dead)”,说明服务没开,输 “systemctl start sshd” 启动就行,小郑那次就是这么解决的;
- 新手记不住命令也别怕,云服务器控制台一般有 “远程连接” 按钮,点进去手动启动服务更简单。
为什么服务会没开?可能是服务器重启后没设自动启动,也可能是误操作被关掉了,跟密码没关系,启动了多半就能连上。
再看端口:是不是连错了 “门牌号”?
Linux 服务器的 ssh 默认用 22 端口,就像快递柜的门牌号,错了就投不进去。但有些服务器会改端口(比如为了安全改到 2222),你还用 22 端口连,肯定被拒绝。
怎么排查?
- 问管理员:“服务器 ssh 用的哪个端口?默认 22 吗?” 小郑后来才知道,他们公司服务器改了端口,难怪连不上;
- 要是知道端口号,连接时得加上端口,命令是 “ssh 用户名 @服务器 IP -p 端口号”(比如 ssh root@192.168.1.1 -p 2222);
- 新手别自己乱改端口,默认 22 虽然不算最安全,但至少能保证你先连上,熟悉了再折腾其他的。
端口错了会有啥提示?多半是 “拒绝连接” 或 “连接被拒绝”,不会提示密码错,这点能和密码问题区分开。
防火墙在搞鬼?可能把你的连接拦住了
Linux 服务器的防火墙(比如 firewalld、ufw),就像门口的保安,会拦不认识的 “访客”。要是没给 ssh 端口开权限,防火墙会直接拒绝你的连接,跟密码对不对没关系。
解决方法:
- 先试试关掉防火墙(临时测试用),命令是 “systemctl stop firewalld”(不同系统命令可能稍变),关掉后再 ssh 连接,能连上就是防火墙的问题;
- 别一直关防火墙,不安全,正确做法是添加规则允许 ssh 端口,比如 “firewall-cmd –add-port=22/tcp –permanent”,然后重启防火墙 “firewall-cmd –reload”;
- 云服务器还得检查 “安全组”(比如阿里云的安全组),控制台里找找有没有允许 22 端口入站,小郑公司的云服务器就因为安全组没开,关了防火墙也连不上。
防火墙为什么拦 ssh?它默认会拒绝所有外部连接,除非你明确告诉它 “允许 ssh 进来”,不然它会把所有连接当可疑分子。
配置文件改错了?ssh 可能 “不认” 你的登录方式
Linux 服务器的 ssh 有个配置文件(一般在 /etc/ssh/sshd_config),里面藏着很多规则,比如 “允许 root 用户登录吗”“密码登录开了吗”。新手要是不小心改了这些,就可能被拒绝。
常见坑点和解决:
- 禁止 root 登录:配置文件里有 “PermitRootLogin no”,意思是不让 root 用户 ssh 登录,改成 “yes” 再重启 ssh 服务(systemctl restart sshd)就行;
- 关闭密码登录:如果设了 “PasswordAuthentication no”,会强制用密钥登录,密码再对也没用,改成 “yes” 就能用密码连了;
- 新手别乱改配置文件,改之前最好复制一份备份(cp /etc/ssh/sshd_config/etc/ssh/sshd_config.bak),改错了还能恢复。
怎么看配置文件?直接在服务器上输 “cat /etc/ssh/sshd_config | grep -v ‘#’”,能过滤掉注释,只看有用的规则,找上面说的那两个参数就行。
还有一种可能:你的 IP 被服务器 “拉黑” 了
输错密码次数太多,Linux 服务器可能会把你的 IP 加入黑名单(比如用了 fail2ban 这类工具),这时候就算密码对了,也会被拒绝。
怎么判断?
- 换个网络试试,比如用手机热点连电脑再 ssh,能连上就是 IP 被拉黑了;
- 登录服务器控制台,查看黑名单文件(不同工具位置不同,比如 fail2ban 的在 /var/lib/fail2ban/),删掉你的 IP 就行;
- 新手怕麻烦的话,等 10-30 分钟(很多黑名单会自动解封),再试可能就好了。
为什么会拉黑?服务器怕有人暴力破解密码,输错几次就暂时不让这个 IP 连,是一种保护机制,不是针对你个人。
不同原因解决时间对比表
可能原因 | 解决时间(新手) | 难度 | 最容易忽略的点 |
---|---|---|---|
ssh 服务未启动 | 5 分钟 | 简单 | 忘了服务器重启后服务没开 |
端口错误或未开放 | 10 分钟 | 中等 | 云服务器安全组没同步 |
防火墙拦截 | 15 分钟 | 中等 | 同时忘了关本地防火墙 |
配置文件参数错误 | 20 分钟 | 较难 | 改完没重启 ssh 服务 |
IP 被拉黑 | 10 分钟(等解封) | 简单 | 换网络测试这一步 |
小郑对照这张表,第一次花了 10 分钟找到问题,第二次 5 分钟就搞定了。他说 “按表上的顺序排查,比瞎试快多了”。
小编的心里话
遇到 ssh 拒绝连接,密码对却连不上,别死磕密码,先查基础服务和设置。新手最容易忽略的就是 “ssh 服务没启动” 和 “端口没开”,这俩解决了,八成问题就没了。配置文件和黑名单可以往后放,毕竟新手很少会碰这些。
小郑现在总结出经验:“连不上先看服务,再看端口防火墙,最后查配置,一步一步来,慌也没用。” 小编觉得也是,Linux 服务器看着复杂,其实很多问题都是 “纸老虎”,耐心排查比乱试有效,你说对吧?