让 VirtualBox 虚拟机可以通过 SSH 被宿主机连接

一、检查 SSH 服务状态

sudo systemctl status sshd

预期输出:

Active: active (running) since Thu 2026-04-09 16:12:14 CST; 51min ago
Loaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)

✅ 关键指标:

  • active (running) - 服务正在运行
  • enabled - 开机自启已启用
  • listening on 0.0.0.0:22 - 监听所有网络接口

二、安装 SSH 服务(如未安装)

不同发行版命令

发行版 安装命令
Debian/Ubuntu sudo apt install openssh-server
CentOS/RHEL 8+ sudo dnf install openssh-server
CentOS/RHEL 7 sudo yum install openssh-server
Arch Linux sudo pacman -S openssh

三、启动并启用 SSH 服务

# 启动服务
sudo systemctl start sshd

# 设置开机自启
sudo systemctl enable sshd

# 重启服务
sudo systemctl restart sshd

四、网络配置(关键步骤)

4.1 查看网卡状态

ip addr show

问题现象: 网卡 enp0s3 没有 IP 地址(只有 MAC 地址)

4.2 启用网卡并获取 IP

# 启用网卡
sudo ip link set enp0s3 up

# 通过 DHCP 获取 IP
sudo dhclient enp0s3

# 验证 IP 地址
ip addr show

五、VirtualBox 网络配置

方案一:NAT + 端口转发(推荐用于本地开发)

适用场景: 仅需宿主机访问虚拟机,安全性较好

配置步骤:

  1. 关闭虚拟机
  2. VirtualBox → 设置 → 网络 → 连接方式:NAT
  3. 高级 → 端口转发 → 添加规则:
名称 协议 主机 IP 主机端口 子系统 IP 子系统端口
SSH TCP 127.0.0.1 2222 10.0.2.15 22
  1. 启动虚拟机
  2. 连接方式:ssh -p 2222 root@127.0.0.1

方案二:桥接网卡(推荐用于局域网访问)

适用场景: 需要局域网内其他设备访问虚拟机

配置步骤:

  1. 关闭虚拟机

  2. VirtualBox → 设置 → 网络 → 连接方式:桥接网卡

  3. 界面名称:选择物理网卡(如 Intel Wi-FiRealtek PCIe

  4. 启动虚拟机

  5. 重新获取 IP:

    sudo dhclient enp0s3
    ip addr show
    
  6. 确认获得和宿主机同网段的 IP(如 192.168.188.115


六、防火墙配置

firewalld(CentOS/RHEL)

# 查看防火墙状态
sudo firewall-cmd --state

# 开放 SSH 服务
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --reload

# 查看已开放的服务
sudo firewall-cmd --list-services

ufw(Ubuntu/Debian)

sudo ufw allow ssh
sudo ufw enable

七、SSH 客户端连接

命令行连接

# 默认端口 22
ssh root@192.168.188.115

# 指定端口(如使用端口转发)
ssh -p 2222 root@127.0.0.1

Termius 配置示例

配置项 值(桥接模式) 值(NAT+端口转发)
主机 192.168.188.115 127.0.0.1
端口 22 2222
用户名 root root
密码 你的 root 密码 你的 root 密码

八、常见问题排查

问题 原因 解决方案
Connection timed out VirtualBox NAT 模式限制 使用端口转发或改为桥接网卡
No route to host 防火墙阻挡 开放 22 端口或关闭防火墙测试
Connection refused SSH 服务未启动 sudo systemctl start sshd
网卡无 IP 未启用 DHCP sudo dhclient enp0s3
包管理器未找到 精简系统或路径问题 使用 yum 或检查 /etc/os-release

九、验证命令汇总

# 1. 检查 SSH 服务
sudo systemctl status sshd

# 2. 查看 IP 地址
ip addr show

# 3. 测试网络连通性(从宿主机)
ping 192.168.188.115

# 4. 测试 SSH 端口(从宿主机)
telnet 192.168.188.115 22
# 或
nc -zv 192.168.188.115 22

# 5. 查看防火墙规则
sudo firewall-cmd --list-all

# 6. 查看系统版本(确认包管理器)
cat /etc/os-release

十、安全建议(可选)

编辑 /etc/ssh/sshd_config

# 修改默认端口(防止扫描)
Port 2222

# 禁止 root 登录(推荐创建普通用户)
PermitRootLogin no

# 使用密钥认证
PasswordAuthentication no
PubkeyAuthentication yes

修改后重启 SSH 服务:

sudo systemctl restart sshd

参考信息

  • 系统版本: CentOS Linux 7 (Core)
  • 内核版本: 3.10.0-1160.el7.x86_64
  • SSH 版本: OpenSSH 7.x
  • VirtualBox 网络模式: 桥接网卡 / NAT
posted @ 2026-05-09 11:06  RK5123153  阅读(26)  评论(0)    收藏  举报