Finalshell连接报错‘Connection refused’?可能是你虚拟机SSH配置的这处细节没改

张开发
2026/6/5 21:17:18 15 分钟阅读

分享文章

Finalshell连接报错‘Connection refused’?可能是你虚拟机SSH配置的这处细节没改
Finalshell连接报错‘Connection refused’的深度排查指南当你用Finalshell连接虚拟机时遇到Connection refused错误而基础检查SSH服务状态、防火墙设置都已确认无误问题很可能隐藏在SSH服务的深度配置中。这种情况常见于对系统进行过安全加固的中高级用户他们可能修改了默认SSH配置参数却忘了同步更新Finalshell的连接设置。1. 理解Connection refused错误的本质这个错误提示表明客户端Finalshell能够到达目标服务器但服务器明确拒绝了连接请求。与Connection timeout不同后者通常意味着网络路径不通或防火墙拦截。当看到refused时我们需要关注服务本身的配置问题。常见触发场景包括SSH服务监听的IP地址不包含客户端访问的地址SSH服务运行在非标准端口而客户端未做相应调整服务器配置限制了特定认证方式系统资源限制如最大连接数导致新连接被拒2. 关键SSH配置参数解析SSH服务的核心配置文件位于/etc/ssh/sshd_config以下几个参数最可能引发连接拒绝问题2.1 ListenAddress - 绑定地址检查默认情况下SSH服务监听所有可用网络接口0.0.0.0。但安全加固时管理员常会将其改为只监听内部地址# 默认配置通常被注释掉 #ListenAddress 0.0.0.0 # 安全加固后的典型配置 ListenAddress 192.168.1.100排查步骤查看当前监听配置sudo grep ListenAddress /etc/ssh/sshd_config检查实际监听状态sudo ss -tulnp | grep sshd如果绑定地址不包含客户端访问的IP需要修改为正确地址或恢复默认配置2.2 Port - 端口号匹配问题虽然22是SSH默认端口但安全实践中常会修改为其他端口# 默认配置 #Port 22 # 修改后的配置 Port 2222对应调整Finalshell连接配置中必须使用相同的端口号同时确保防火墙对新端口开放sudo ufw allow 2222/tcp2.3 认证方式配置安全加固常会禁用密码认证和root登录# 默认允许密码认证 #PasswordAuthentication yes # 安全配置可能改为 PasswordAuthentication no PermitRootLogin no解决方案矩阵配置参数默认值安全值Finalshell对应调整PasswordAuthenticationyesno必须改用密钥认证PermitRootLoginyesno使用普通用户连接PubkeyAuthenticationyesno需重新启用或改用其他认证方式3. 诊断与修复流程3.1 配置文件差异对比使用以下命令对比当前配置与默认配置的差异# 生成当前配置的精简视图 sudo grep -vE ^#|^$ /etc/ssh/sshd_config current_config # 获取默认配置样本需安装openssh-server包 zcat /usr/share/doc/openssh-server/sshd_config.gz | grep -vE ^#|^$ default_config # 对比差异 diff -y --suppress-common-lines current_config default_config3.2 实时连接测试技巧在修改配置前可先用命令行测试连接参数# 测试密码认证 ssh -v -p 端口号 用户名IP地址 # 测试密钥认证 ssh -v -p 端口号 -i 私钥路径 用户名IP地址-v参数会输出详细调试信息帮助定位失败的具体阶段。3.3 配置修改后的完整流程备份原始配置sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak编辑配置文件sudo nano /etc/ssh/sshd_config重载SSH服务避免重启sudo systemctl reload sshd验证服务状态sudo systemctl status sshd4. Finalshell客户端的对应调整Finalshell的连接配置需要与服务器端严格匹配。创建或编辑连接时注意连接参数对照表服务器配置Finalshell设置位置注意事项非标准端口基本设置→端口必须与服务器Port参数一致密钥认证认证→选择私钥文件需提前转换PuTTY格式密钥为OpenSSH格式禁用密码认证认证→取消密码选项只能使用密钥认证禁用root登录基本设置→使用普通用户名准备具有sudo权限的普通用户高级技巧在高级选项卡中可设置连接超时时间启用压缩选项可改善高延迟环境下的体验使用隧道功能可绕过某些网络限制5. 系统级深度排查当上述检查都正常但问题依旧时可能需要排查5.1 资源限制检查# 检查最大连接数限制 sudo grep MaxStartups /etc/ssh/sshd_config # 查看当前连接数 sudo netstat -tnpa | grep sshd | wc -l5.2 SELinux/AppArmor影响# 检查SELinux状态 sudo sestatus # 查看相关日志 sudo ausearch -m avc -ts recent5.3 TCP Wrappers限制检查/etc/hosts.allow和/etc/hosts.deny文件中是否有限制规则sudo grep sshd /etc/hosts.allow /etc/hosts.deny6. 典型场景解决方案场景一服务器只监听IPv6地址# 查看监听情况 sudo netstat -tuln | grep ssh # 解决方案在sshd_config中添加或修改 ListenAddress 0.0.0.0 AddressFamily any场景二连接数达到上限# 临时解决方案增加最大连接数 sudo sed -i s/#MaxStartups 10:30:100/MaxStartups 50:30:200/ /etc/ssh/sshd_config sudo systemctl reload sshd场景三系统资源不足# 检查系统资源 free -h uptime # 解决方案优化系统或增加资源7. 安全与便利的平衡建议在解决连接问题的同时不应完全放弃安全措施。推荐的安全实践包括使用非标准端口Fail2ban的组合禁用密码认证但配置多个备用密钥设置基于IP的限制结合VPN访问定期轮换SSH密钥为不同用户设置不同的权限级别# 示例创建受限权限用户 sudo useradd -m -s /bin/bash devuser sudo passwd devuser # 限制命令执行权限 sudo nano /etc/sudoers.d/devuser # 添加内容devuser ALL(ALL) NOPASSWD: /usr/bin/git, /usr/bin/docker

更多文章