当前位置: 首页 > news >正文

240806-RHEL 无法通过 ssh username@ip 远程连接,报错:Connection closed by ip port 22

在这里插入图片描述

A. 原因排查

遇到这个错误通常意味着 SSH 服务可能在目标主机上没有正常运行,或有防火墙/网络配置问题。以下是一些排查步骤:

  1. 检查 SSH 服务状态
    确认 SSH 服务是否正在目标主机上运行。

    sudo systemctl status sshd
    
  2. 重启 SSH 服务
    如果 SSH 服务没有运行,可以尝试重启它。

    sudo systemctl restart sshd
    
  3. 检查 SSH 配置文件
    确保 /etc/ssh/sshd_config 文件配置正确。特别是检查以下配置:

    Port 22
    PermitRootLogin no
    PasswordAuthentication yes
    
  4. 检查防火墙设置
    确保防火墙允许 SSH 连接。可以使用 firewalldiptables 管理防火墙设置。

    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload
    

    或者对于 iptables

    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    sudo service iptables save
    sudo service iptables restart
    
  5. 检查 SELinux 设置
    如果 SELinux 启用,它也可能阻止 SSH 连接。可以暂时将其设为宽松模式以排除问题。

    sudo setenforce 0
    
  6. 查看 SSH 日志
    检查 /var/log/secure/var/log/auth.log 文件中的日志,以获取更多错误信息。

    sudo tail -f /var/log/secure
    
  7. 检查网络连接
    确认本地主机到远程主机的网络连接正常。使用 ping 命令验证连接:

    ping ip_address
    
  8. 端口是否被占用
    确认端口 22 没有被其他进程占用:

    sudo lsof -i :22
    

如果以上步骤仍未解决问题,请提供更多相关错误信息,以便进一步诊断。

B. 端口注释

如果 Port 22/etc/ssh/sshd_config 文件中被注释了,这可能导致 SSH 服务无法正确绑定到端口 22,从而无法接受连接。你可以按照以下步骤操作:

  1. 编辑 sshd_config 文件
    打开 /etc/ssh/sshd_config 文件进行编辑。

    sudo nano /etc/ssh/sshd_config
    
  2. 取消注释 Port 22
    找到 Port 22 行并取消注释(去掉行首的 #)。

    #Port 22
    

    改为:

    Port 22
    
  3. 保存并关闭文件
    保存编辑并退出编辑器。如果使用 nano,可以按 Ctrl + X,然后按 Y 再按 Enter

  4. 重启 SSH 服务
    重新启动 SSH 服务以应用更改。

    sudo systemctl restart sshd
    
  5. 验证 SSH 服务状态
    确认 SSH 服务已启动并绑定到端口 22。

    sudo systemctl status sshd
    
  6. 尝试再次连接
    尝试从客户端使用 SSH 连接到服务器。

    ssh username@ip
    

如果上述步骤未解决问题,请检查其他配置项是否正确,并确保没有防火墙或 SELinux 阻止 SSH 连接。

C. 状态显示

既然 sudo systemctl status sshd 显示 SSH 服务一切正常,但你仍然无法通过 SSH 连接远程服务器,这可能还有其他原因。请继续进行以下检查:

  1. 检查防火墙配置
    确认防火墙允许端口 22 的流量。你可以使用以下命令检查和修改防火墙规则。

    使用 firewalld

    sudo firewall-cmd --list-all
    sudo firewall-cmd --permanent --add-service=ssh
    sudo firewall-cmd --reload
    

    使用 iptables

    sudo iptables -L -n
    sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
    sudo service iptables save
    sudo service iptables restart
    
  2. 检查 SELinux 配置
    如果 SELinux 已启用,它可能会阻止 SSH 连接。可以暂时将 SELinux 设置为宽松模式以进行排除:

    sudo setenforce 0
    

    确认这是否解决了问题。如果解决了问题,说明 SELinux 配置需要调整。你可以将 SELINUX 设置为 permissive 或调整 SELinux 规则以允许 SSH 连接。

  3. 检查服务器的网络连接
    确认服务器的网络连接正常,且可以从你的客户端访问端口 22。

    ping ip_address
    telnet ip_address 22
    nc -zv ip_address 22
    
  4. 查看 SSH 日志
    查看 SSH 日志以获取更多错误信息。日志文件通常位于 /var/log/secure/var/log/auth.log

    sudo tail -f /var/log/secure
    sudo tail -f /var/log/auth.log
    
  5. 检查 SSH 客户端配置
    确保客户端的 SSH 配置正确,并尝试使用详细模式连接以获得更多调试信息。

    ssh -v username@ip_address
    ssh -vv username@ip_address
    ssh -vvv username@ip_address
    
  6. 确保 SSH 端口没有被其他进程占用
    确认端口 22 没有被其他进程占用:

    sudo lsof -i :22
    

如果这些步骤仍未解决问题,请提供更多具体的错误消息和环境信息,以便进一步诊断。

http://www.lryc.cn/news/417693.html

相关文章:

  • C语言:复读机2种写法(输入什么就输出什么)
  • PySide6/PyQT学习笔记(很杂)
  • 学习笔记-JWT 保持登录状态
  • React 性能优化
  • 后端常见问题及深度解决方案
  • C:野指针介绍(定义、危害、规避)以及野指针与空指针的区分
  • vue中v-html 后端返回html + script js中click事件不生效
  • 介绍maven生命周期-水温
  • spring boot3.x快速入门
  • JavaWeb之servlet关于Ajax实现前后端分离
  • vue3表格组件formatter
  • C# 使用NHibernate连接MySQL实现数据的增删改查
  • IDEA2024.2重磅发布,更新完有4G!
  • QWT+Qt Creator+MSVC的配置与使用
  • Netty高性能数据结构
  • 关于百度、微软语音合成的实现案例
  • 二叉树:镜像树,子结构,二叉树转链表,二叉树的倒数K个数,对称,Z型打印
  • 瑞秋,詹妮弗·安妮斯顿多年来与本·阿弗莱克保持着“调情”友谊 又一个詹妮弗
  • 指纹失效,忘记iPhone屏幕解锁密码怎么应对?
  • 09.XSS跨站脚本攻击(超详细!!!)
  • 讲解人工智能在现代科技中的应用和未来发展趋势-水文
  • 2.2 QT 环境配置
  • 2.类和对象(上)
  • 【实际案例】服务器宕机情况分析及处理建议
  • Linux系统之ncdu命令的基本使用
  • STM32L051K8U6-HAL-LED闪烁设计
  • 记一次远程API调用失败
  • 【力扣】746.使用最小花费爬楼梯
  • 06:【stm32】中断一:NVIC的配置
  • Flutter简介