“Connection refused”表明目标主机22端口无进程监听,主因是openssh-server未安装、sshd服务未启动、配置错误致绑定失败、防火墙/安全中心拦截或ListenAddress限制为127.0.0.1;需依次检查安装状态、service运行情况、ss -tlnp端口监听、journalctl日志报错、firewalld/ufw规则及sshd_config中PasswordAuthentication、PermitRootLogin和ListenAddress配置。

统信系统SSH连接提示“Connection refused”说明客户端发出去的TCP SYN包被目标主机明确拒绝,根本原因在于22端口没有进程监听——不是网络不通,也不是密码错,而是服务没起来、端口被拦住或配置让sshd压根绑不了端口。
确认SSH服务是否已安装并运行
统信UOS桌面版默认只装openssh-client,【openssh-server和openssh-sftp-server缺一不可】。终端执行:
dpkg -l | grep openssh
若输出中缺失openssh-server或openssh-sftp-server,立即补装:
sudo apt install -y openssh-server openssh-sftp-server
安装完必须启动服务:
sudo systemctl start ssh && sudo systemctl enable ssh
再检查状态:
systemctl status ssh
看到active (running)且Loaded: enabled才算成功。这一步漏掉,后续所有操作都白搭。
验证22端口是否真实监听
服务显示running不代表它真在听22端口。执行:
sudo ss -tlnp | grep ':22'
有输出才说明sshd绑定了端口;若无任何返回,说明sshd虽在跑,但因配置错误(比如ListenAddress写死了127.0.0.1)或密钥缺失,根本没监听外部IP。
此时必须查日志定位卡点:
sudo journalctl -u ssh --since "1 hour ago" -n 50 -e
重点关注“Could not load host key”“bind: Cannot assign requested address”“Bad configuration option”这类报错——它们直接决定sshd能否真正落地监听。
检查防火墙是否放行22端口
firewalld或ufw只要没开22/tcp,请求就在内核层被RST掉,现象和sshd没跑一模一样。
方法一(firewalld):
sudo firewall-cmd --permanent --add-port=22/tcp → sudo firewall-cmd --reload → sudo firewall-cmd --list-ports
方法二(ufw):
sudo ufw allow 22 → sudo ufw status
【注意:ufw默认deny all,只放行22端口即可,别开一堆端口】
若用的是安全中心实时防护模块,它可能静默拦截SSH连接,需手动关闭该开关,否则防火墙规则开了也连不上。
修正sshd_config关键参数
第一步:打开配置文件
sudo vi /etc/ssh/sshd_config
第二步:确保以下三项未被注释且值正确
① PasswordAuthentication yes(禁用密码登录会导致“Permission denied”,但不会报Connection refused)
② PermitRootLogin yes 或 prohibit-password(若以root直连,必须设为yes;该行若以#开头,修改无效)
③ ListenAddress 0.0.0.0(若写成127.0.0.1,远程IP永远连不上)
第三步:保存后重启服务
sudo systemctl restart ssh

















