新闻资讯

SSH 远程时 22 端口拒绝连接怎么办?原因分析与解决方法汇总

远程 | 2025-11-21

SSH 远程时 22 端口拒绝连接,核心原因集中在网络连通性异常、SSH 服务未正常运行、防火墙拦截、配置文件错误四大类。需按 “网络→服务→防火墙→配置” 的顺序逐步排查,以下是具体解决流程。

一、如何先排查网络与目标主机基础问题?

网络层异常是 22 端口拒绝连接的首要诱因,需先完成 3 项验证:
1. 验证 IP 与网络连通性:在本地终端执行ping 远程服务器IP,若显示 “请求超时”,需确认服务器 IP 是否正确、是否处于同一网络(如虚拟机 NAT 模式需检查虚拟网卡状态)。若为公网服务器,需确认公网 IP 是否生效、服务商是否封禁网络。
2. 检查 22 端口是否开放:使用telnet 远程服务器IP 22或nc -zv 远程服务器IP 22,若提示 “连接失败”,说明端口未监听或被拦截;若显示 “Connected”,则网络层无问题,需排查服务层。
3. 排除网络策略限制:公司或校园网络可能封禁 22 端口,可尝试切换热点测试,或咨询网络管理员开放 SSH 22 端口权限。
这一步能快速定位是否为网络层面导致的 22 端口拒绝连接,避免后续无效操作。

二、SSH 服务未运行或异常如何修复?

SSH 服务未启动是 22 端口拒绝连接的高频原因,需分系统检查修复:
1. 检查 SSH 服务状态:
-Linux 系统(systemd):执行sudo systemctl status sshd,若显示 “inactive (dead)”,说明服务未启动。
-Linux 系统(SysV init):执行sudo service sshd status查看状态。
-Windows 系统:按下Win+R输入services.msc,找到 “OpenSSH SSH Server”,确认状态为 “正在运行”。
2. 启动并配置自启:
-Linux 系统:执行sudo systemctl start sshd启动服务,再用sudo systemctl enable sshd设置开机自启,避免重启后服务失效。
-Windows 系统:右键 “OpenSSH SSH Server” 选择 “启动”,在 “属性” 中设置启动类型为 “自动”。
3. 验证服务监听:执行netstat -tuln | grep 22,若显示 “0.0.0.0:22” 或服务器 IP:22,说明 SSH 服务已正常监听 22 端口。
若服务启动失败,需检查是否安装 SSH 服务端(Linux 可执行sudo apt install openssh-server或sudo yum install openssh-server安装)。

三、防火墙拦截 22 端口怎么解决?

本地或服务器防火墙未放行 22 端口会直接导致连接拒绝,需双向配置:
1. 服务器端防火墙配置:
-若用 ufw 防火墙(Ubuntu):执行sudo ufw allow 22/tcp开放 22 端口,再用sudo ufw reload生效。
-若用 iptables 防火墙(CentOS):执行sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT,并sudo service iptables save保存规则。
-云服务器额外配置:需在阿里云、腾讯云等控制台的 “安全组” 中,添加 “入站规则”,允许 TCP 22 端口访问。
2. 本地防火墙配置:
-Windows 系统:打开 “Windows Defender 防火墙→高级设置→入站规则”,确认 “OpenSSH Server-In-TCP” 规则已启用,或新建规则放行 22 端口。
-Linux 本地:执行sudo ufw allow out 22/tcp允许 outbound 22 端口流量。
若使用第三方防火墙(如 360 安全卫士),需在 “端口防护” 中添加 22 端口到白名单。
图片alt

四、SSH 配置文件错误导致 22 端口拒绝连接如何修正?

sshd_config配置不当会限制 22 端口连接,需重点检查 5 项参数:
1. 打开配置文件:执行sudo nano /etc/ssh/sshd_config(Linux)或编辑C:\ProgramData\ssh\sshd_config(Windows)。
2. 关键配置检查与修正:
-Port 22:确认端口为 22(若修改过需用新端口连接),且未被注释。
-PermitRootLogin:若需 root 连接,设置为 “yes” 或 “prohibit-password”(密钥登录)。
-PasswordAuthentication:若用密码登录,确保设置为 “yes”。
-PubkeyAuthentication:若用密钥登录,确保设置为 “yes”。
-ListenAddress:设置为 “0.0.0.0”(监听所有接口),避免仅监听本地环路地址。
3. 生效配置:修改后执行sudo systemctl restart sshd(Linux)或重启 “OpenSSH SSH Server” 服务(Windows)。
配置文件修改前建议备份:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak,避免改错无法恢复。


拓展阅读

1. 密钥认证失败导致 22 端口拒绝连接怎么办? 检查本地私钥权限(执行chmod 600 ~/.ssh/id_rsa),确保公钥已添加到服务器~/.ssh/authorized_keys,可通过cat ~/.ssh/id_rsa.pub | ssh user@ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"重新同步密钥。

2. 主机密钥变更引发 22 端口连接警告如何处理? 执行ssh-keygen -R 远程服务器IP删除旧密钥,重新连接时输入 “yes” 接受新密钥即可,此情况多因服务器重装系统导致。

3. SELinux/AppArmor 限制 22 端口连接怎么解决? 执行sestatus查看 SELinux 状态,临时关闭用setenforce 0,永久关闭需修改/etc/selinux/config;AppArmor 可执行sudo aa-complain /usr/sbin/sshd解除限制。