在 Ubuntu 虚拟机上设置 SSH 以从 Windows 主机访问的教程
本教程基于您的 Ubuntu 虚拟机(IP: 192.168.50.128,使用 ens33 接口)和 Windows 主机环境。假设虚拟机运行在 VMware 或 VirtualBox 等软件中,使用 NAT 或桥接网络模式。教程分为准备、安装配置和测试部分。所有命令在 Ubuntu 终端执行(使用 xiaozhao 用户)。
前提条件
- Ubuntu 已连接网络,能运行
apt命令。 - Windows 主机已安装 SSH 客户端(如果没有,可在 PowerShell 中使用内置 OpenSSH,或安装 PuTTY)。
- 虚拟机网络设置允许主机访问(如果是 NAT 模式,可能需在虚拟机软件中配置端口转发)。
步骤 1: 查看 Ubuntu 的 IP 地址
-
打开 Ubuntu 终端(Ctrl + Alt + T)。
-
执行命令查看所有接口的 IP:
ip addr show- 查找
ens33(或类似接口)下的inet行,例如:192.168.50.128/24。这是您的本地 IPv4 地址。 - 备选快速命令:
hostname -I(显示所有 IP,空格分隔)。
注意:如果需要公网 IP(外部访问),运行
curl ifconfig.me。 - 查找
步骤 2: 安装和配置 SSH 服务
SSH 服务允许远程登录。如果未安装或未运行,会导致 “Connection refused” 错误。
-
更新软件源:
sudo apt update -
安装 OpenSSH Server(如果已安装,会跳过):
sudo apt install openssh-server -
启动 SSH 服务:
sudo systemctl start ssh -
启用开机自启:
sudo systemctl enable ssh -
检查服务状态:
sudo systemctl status ssh- 输出应显示 “Active: active (running)”。如果失败,重启服务或检查日志:
sudo journalctl -u ssh。
- 输出应显示 “Active: active (running)”。如果失败,重启服务或检查日志:
步骤 3: 配置防火墙
Ubuntu 默认可能启用 UFW 防火墙,需允许 SSH 端口(默认 22)。
-
允许 SSH:
sudo ufw allow ssh -
重载防火墙:
sudo ufw reload -
检查状态:
sudo ufw status- 确保 “SSH” 显示 “ALLOW”。
-
验证端口监听:
sudo ss -tuln | grep :22- 应看到类似
tcp LISTEN 0 128 0.0.0.0:22的输出。
- 应看到类似
步骤 4: 从 Windows 主机测试连接
-
在 Windows 命令提示符(cmd)或 PowerShell 中,测试连通性:
ping 192.168.50.128- 如果成功(有回复),网络正常;否则检查虚拟机网络设置。
-
尝试 SSH 连接:
ssh xiaozhao@192.168.50.128- 首次连接会提示接受主机密钥,输入
yes。 - 输入 Ubuntu 用户
xiaozhao的密码。 - 如果端口非默认(检查
/etc/ssh/sshd_config中的Port),添加-p 端口号。
- 首次连接会提示接受主机密钥,输入
常见问题排查
- Connection refused:SSH 未运行或防火墙阻塞。重启服务并检查 UFW。
- No route to host:网络问题。确保虚拟机和主机在同一子网,或配置桥接模式。
- Permission denied:密码错误,或需设置密钥认证(生成密钥对:
ssh-keygen,然后复制公钥到 VM 的~/.ssh/authorized_keys)。 - 超时:检查虚拟机防火墙、软件端口转发,或重启 VM。
- 如果是公网访问:获取主机公网 IP,并配置路由器端口转发(22 到 VM IP)。
安全提示
- 使用强密码或密钥认证。
- 限制 SSH 访问:编辑
/etc/ssh/sshd_config(如禁用 root 登录:PermitRootLogin no),然后重启服务:sudo systemctl restart ssh。 - 监控日志:
sudo tail -f /var/log/auth.log。
完成这些步骤后,您应能从 Windows 成功 SSH 到 Ubuntu。如果遇到具体错误,运行相关命令并分享输出以进一步诊断。