返回

SSH 无法连接虚拟机中 Ubuntu Linux 的解决方案

电脑技巧

排除 SSH 连接虚拟机中 Ubuntu Linux 故障的详尽指南

对于技术娴熟的人员来说,在虚拟机 (VM) 中设置 Ubuntu Linux 操作系统是一项常见任务。但是,当您无法通过 SSH 访问 VM 时,事情可能会变得令人沮丧。本文将深入探讨 SSH 连接故障排除过程,并提供解决这些问题的分步指南。

排除原因

端口转发

  • 虚拟机中的 SSH 端口(默认端口为 22)是否已正确转发到主机?
  • 如果使用 NAT 网络模式,请在虚拟机管理软件中设置端口转发规则。
  • 如果使用桥接网络模式,确保主机和虚拟机具有相同的网关和子网掩码。

防火墙

  • 主机和虚拟机的防火墙是否允许 SSH 连接?
  • 在 Linux 主机上,检查 ufwiptables 防火墙规则。
  • 在 Windows 主机上,检查 Windows 防火墙规则。

网络配置

  • 主机和虚拟机是否具有正确的 IP 地址和子网掩码?
  • 检查虚拟机的网络适配器是否已启用并正常工作。
  • 如果使用无线网络,确保无线网络连接稳定。

密钥认证

  • 如果使用密钥认证,您是否已将公钥添加到虚拟机中的 authorized_keys 文件中?
  • 使用以下命令添加公钥:
sudo nano /home/user/.ssh/authorized_keys

其中 user 是虚拟机中的用户名。

SSH 服务

  • 虚拟机中的 SSH 服务是否已启动并正在运行?
  • 使用以下命令检查 SSH 服务状态:
sudo systemctl status sshd

解决方案

检查端口转发

  • 检查虚拟机管理软件中的端口转发规则。
  • 确保虚拟机中的 SSH 端口已正确转发到主机。

检查防火墙

  • 在主机和虚拟机的防火墙中允许 SSH 连接。
  • 使用 ufwiptables 命令(Linux)或 Windows 防火墙设置(Windows)允许 SSH 连接。

检查网络配置

  • 确保主机和虚拟机具有正确的 IP 地址和子网掩码。
  • 检查虚拟机的网络适配器是否已启用并正常工作。
  • 如果使用无线网络,确保无线网络连接稳定。

检查密钥认证

  • 将您的公钥添加到虚拟机中的 authorized_keys 文件中。
  • 运行 sudo nano /home/user/.ssh/authorized_keys 命令添加公钥。

检查 SSH 服务

  • 检查虚拟机中的 SSH 服务是否已启动并正在运行。
  • 使用 sudo systemctl status sshd 命令检查 SSH 服务状态。

结论

通过系统地排除 SSH 连接问题,您可以快速识别并解决导致无法访问虚拟机中 Ubuntu Linux 实例的根源。遵循本指南中概述的步骤,您将能够轻松地恢复 SSH 连接,继续您的任务。

常见问题解答

1. 为什么我仍然无法通过 SSH 连接到我的虚拟机?

  • 检查端口转发规则、防火墙设置、网络配置、密钥认证和 SSH 服务状态。可能还有其他因素导致连接问题,请尝试其他故障排除步骤。

2. 我无法在虚拟机中找到 authorized_keys 文件,该怎么办?

  • 手动创建一个 authorized_keys 文件并将其添加到虚拟机中的 .ssh 目录中。

3. 我尝试了所有步骤,但我仍然无法连接,该怎么办?

  • 重新启动虚拟机和主机。如果问题仍然存在,请联系虚拟机管理软件的支持团队。

4. 如何在 Windows 中使用密钥认证?

  • 使用 PuTTYgen 生成密钥对,然后将公钥复制到虚拟机中的 authorized_keys 文件中。

5. 如何在 Linux 中允许 SSH 连接?

  • 使用 ufw allow 22 命令在 Ubuntu 中允许 SSH 连接,或者使用 iptables -A INPUT -p tcp --dport 22 -j ACCEPT 命令在其他 Linux 发行版中允许 SSH 连接。