新安装的 Linux 系统无法 SSH 连接,通常是由于 SSH 服务未安装或未启动。请按以下步骤排查:
- 检查 SSH 服务状态
# 检查 SSH 服务是否安装
systemctl status ssh # Ubuntu/Debian
systemctl status sshd # CentOS/RHEL/Fedora
# 如果没有安装,先安装
sudo apt install openssh-server # Debian/Ubuntu
sudo yum install openssh-server # CentOS/RHEL
sudo dnf install openssh-server # Fedora
- 启动并启用 SSH 服务
# 启动服务
sudo systemctl start ssh # Ubuntu/Debian
sudo systemctl start sshd # CentOS/RHEL/Fedora
# 设置开机自启
sudo systemctl enable ssh # Ubuntu/Debian
sudo systemctl enable sshd # CentOS/RHEL/Fedora
- 检查防火墙设置
# 查看防火墙状态
sudo ufw status # Ubuntu (如果使用UFW)
sudo firewall-cmd --state # CentOS/RHEL/Fedora (firewalld)
sudo iptables -L # 检查iptables规则
# 开放22端口
sudo ufw allow 22 # Ubuntu
sudo firewall-cmd --add-port=22/tcp --permanent # CentOS/RHEL
sudo firewall-cmd --reload
- 检查 SSH 配置
# 检查配置文件
sudo nano /etc/ssh/sshd_config
# 确保以下设置正确:
# PermitRootLogin yes(如果要以root登录)
# PasswordAuthentication yes(如果要用密码登录)
# Port 22(默认端口)
# 修改后重启服务
sudo systemctl restart ssh/sshd
- 验证 SSH 端口监听
# 检查SSH是否在监听22端口
sudo netstat -tlnp | grep :22
ss -tlnp | grep :22
- 云服务器特殊情况
如果你使用的是云服务器(AWS/Azure/阿里云/腾讯云等):
- 检查安全组规则 – 确保22端口对公网开放
- 检查云防火墙 – 控制台可能有额外的防火墙设置
- 本地网络测试
# 在同一网络内先用局域网IP测试
ifconfig 或 ip addr # 查看本机IP
# 从另一台机器测试连接
ssh username@服务器IP
- 排错命令汇总
# 查看SSH服务日志
sudo journalctl -u ssh -f
sudo tail -f /var/log/auth.log # Ubuntu
sudo tail -f /var/log/secure # CentOS/RHEL
- 常见问题解决
· 权限问题:确保用户家目录权限正确(chmod 700 ~/.ssh)
· SELinux问题(CentOS/RHEL):
sudo setsebool -P sshd_full_access on
sudo restorecon -Rv /etc/ssh
· 密码认证被禁用:修改sshd_config中PasswordAuthentication yes
请告诉我:
- 你使用的是哪个 Linux 发行版?
- 是在物理机、虚拟机还是云服务器上?
- 执行上述命令时的具体输出?
这样我能提供更针对性的帮助。