[{"content":"前置知识 ssh基础知识 已有很多大佬进行总结，这里不再赘述。可参考骏马金龙的博客\n修改 ssh 端口（以 centos 8.2 为例） 备份配置文件 在修改任何配置文件之前，最好先进行备份，以防万一修改出错可以迅速恢复。\n1 cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak 编辑 SSH 配置文件 1 2 3 4 5 6 7 8 9 10 11 12 # 打开 SSH 守护进程的配置文件 vi /etc/ssh/sshd_config # 更改端口号 # 找到 Port 行，取消注释。然后，将数字更改为你要设置的新端口号 # 重启SSH服务 systemctl restart ssh # 验证更改 # 使用 netstat 或 ss 命令来检查新端口是否正在监听 netstat -tuln | grep newport 排查思路 检查服务端已启用 ssh 服务 使用 systemctl 命令\n1 systemctl status sshd 使用 ps 命令来检查是否有 sshd 进程正在运行\n1 ps -e | grep sshd 使用 netstat 或 ss 命令来检查端口22（SSH默认端口）是否正在监听\n1 2 netstat -tlnp | grep 22 ss -tlnp | grep 22 如果服务未启用，可以使用 systemctl start sshd 命令来启动服务，并使用 systemctl enable sshd 命令来设置服务在系统启动时自动启动。\n确认客户端和服务端的网络是否联通 1 telnet ip port 确认配置文件无误 检查防火墙是否进行阻断 检查是否开启了firewalld\n1 2 3 4 5 6 7 8 9 10 11 12 13 14 systemctl status firewalld # 如果开启了，查看firewalld中的规则。 firewall-cmd --list-all # firewall当前的zone为public，该zone默认只放通ssh和dhcpv6-client服务。其中ssh服务为默认的22端口，当ssh修改为非22端口时就无法访问。 # 方法1：执行以下命令，停止firewalld服务并取消开机自启。 systemctl stop firewalld systemctl disable firewalld # 方法2：执行以下命令，在firewalld服务中添加新的端口55660。 firewall-cmd --add-port=newport/tcp --permanent --zone=public firewall-cmd --reload 检查 iptables 是否做了限制\n1 iptables -L 1 2 3 4 5 6 # 如果做了做了限制，未放通新的 ssh 端口，则要进行放通 vi /etc/sysconfig/iptables -A INPUT -m state -state NEW -m tcp -p tcp -dport newport -j ACCEPT # 修改完成后重启 iptables 服务 systemctl restart iptables 检查 hosts 配置文件 Linux 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这个两个文件，可以限制或者允许某个或者某段IP地址远程SSH登录服务器。\n检查 /etc/hosts.allow ，允许当前这个IP地址ssh登录。\n1 sshd: 192.168.1.3 检查/etc/hosts.deny，如果存在sshd:all:deny，请注释掉该行。\nhosts.allow 和 hosts.deny 两个文件同时设置规则的时候，hosts.allow 文件中的规则优先级高。假设 hosts.allow 设置 sshd: 192.168.1.3 ，hosts.deny 设置了 sshd:all:deny ，那么云服务器只允许192.168.1.3这个IP地址的SSH登录，其它的 IP 都会拒绝。\n如果是云服务器，需确认服务器安全组对新端口放通 ","date":"2026-07-27T00:00:48+08:00","permalink":"/p/ssh-connection-failed/","title":"SSH 远程登录失败处理"}]