Putty连接被拒绝怎么办 Putty排查连接错误方法【攻略】

分类:电脑数码

Putty连接被拒绝的首要原因是SSH服务未运行或未监听外部端口,需依次排查:1. 执行systemctl status ssh(Ubuntu)或sshd(CentOS)确认服务状态;2. 用ss -tlnp | grep ':22'验证是否监听0.0.0.0:22;3. 检查UFW/firewalld/云安全组是否放行端口;4. 核对Putty中IP、端口、协议配置是否匹配;5. 确认openssh-server已安装且配置语法正确。

Putty连接被拒绝时,你无法执行任何服务器管理操作,命令行窗口直接弹出“Connection refused”或“Network error: Connection refused”,这不是密码输错的提示,而是客户端根本没触碰到SSH服务进程——说明服务器上压根没启动ssh守护进程,或端口监听被彻底屏蔽。

第一步:确认SSH服务是否在运行

打开服务器控制台(如云平台Web终端、物理机或虚拟机本地终端),执行:

systemctl status sshd

若显示 【inactive (dead)】 或报错“Unit sshd.service could not be found”,说明SSH服务未安装或已停止。CentOS/RHEL系用 systemctl status sshd;Ubuntu/Debian系可能显示为 ssh 而非 sshd,此时改用 systemctl status ssh。

若服务未运行,先尝试启动:systemctl start sshd。启动失败则立即运行 sshd -t 检查 /etc/ssh/sshd_config 配置语法——一个漏掉的引号或错位的冒号都会导致服务无法加载。

第二步:验证端口监听与IP绑定

执行 netstat -tuln | grep ':22\|:'【你填写的端口号】,例如 netstat -tuln | grep ':2022'。

如果无任何输出,说明sshd根本没有监听该端口;若有输出但显示 127.0.0.1:22 或 ::1:22,代表SSH只绑定了本地回环地址,外部IP无法访问——必须修改 /etc/ssh/sshd_config 中的 ListenAddress 行,删掉或注释掉具体IP限制,保留默认的监听所有接口(即不写 ListenAddress 或设为 0.0.0.0)。

改完配置后务必执行 systemctl restart sshd 生效,否则修改无效。

第三步:检查防火墙是否放行SSH端口

方法一:UFW(Ubuntu常用)
执行 ufw status verbose,查看22端口(或你自定义端口)是否在“ALLOW”列表中。若无,运行 sudo ufw allow 22(或对应端口号)。

方法二:firewalld(CentOS 7+/RHEL 8+)
运行 firewall-cmd --list-all,确认 ssh 服务或目标端口已启用。若缺失,执行 firewall-cmd --permanent --add-port=22/tcp → firewall-cmd --reload。

方法三:iptables(旧系统)
运行 iptables -L INPUT -n,查找是否有 ACCEPT tcp dpt:22 的规则。没有就加:iptables -A INPUT -p tcp --dport 22 -j ACCEPT,再保存规则(iptables-save > /etc/sysconfig/iptables)。

注意:云服务器(如阿里云、腾讯云)还必须同步检查安全组规则,控制台里开放对应端口比系统防火墙优先级更高,此处漏配将直接拦截所有入向连接。

第四步:核对Putty会话参数是否完全匹配

打开Putty,在 Session 标签页下逐项确认:
• Host Name(or IP address)填的是服务器公网IP,不是内网IP、localhost 或 127.0.0.1;
• Port 填的数字必须和服务器 sshd_config 中 Port 参数值严格一致;
• Connection type 必须选 SSH(不是 Telnet、Raw 或 Serial);
• 如果服务器禁用了密码登录(PasswordAuthentication no),Putty里就不能只输密码——必须提前配置好SSH密钥认证(Auth → Private key file for authentication)。

改完参数后,不要点“Save”覆盖旧配置,先点“Open”测试连接。成功后再保存为新会话名,避免误覆写可用配置。

第五步:排查底层依赖与冲突进程

执行 ps aux | grep sshd,看是否存在多个 sshd 进程或异常子进程(如 /usr/sbin/sshd -D 卡住)。若有残留僵尸进程,用 kill -9 PID 清理干净。

在Ubuntu/Debian上,若执行 ssh localhost 报 “Connection refused”,大概率是 openssh-server 未安装。运行 sudo apt-get update → sudo apt-get install openssh-server。安装中途若卡在 “Unable to acquire the dpkg frontend lock”,说明有其他 apt 进程正在运行,先执行 ps aux | grep apt 找出PID,再 sudo kill -9 那个PID,最后重试安装。

猜您喜欢