你的第一个虚拟 Linux 实验室:简易设置指南
Source: Dev.to
在 Ubuntu 上设置 SSH 服务器
# 更新软件包列表
sudo apt update
# 安装 OpenSSH 服务器
sudo apt install -y openssh-server
# 启用并启动服务
sudo systemctl enable ssh
sudo systemctl start ssh
安装 SSH 服务器并确保它在启动时自动运行。
验证服务
sudo systemctl status ssh
你应该会看到 active (running)。
检查虚拟机的 IP 地址:
ip a
你会看到类似下面的一行:
inet 192.168.45.100/24
使用该 IP 地址从 Windows 进行连接。
从 Windows PowerShell 连接
ssh alok@192.168.45.100
首次连接时会提示:
Are you sure you want to continue connecting (yes/no)?
输入 yes 以信任虚拟机的 SSH 指纹(它会被保存到 known_hosts)。
将 Windows 公钥复制到 Ubuntu
Windows PowerShell 没有 ssh-copy-id,可以使用一行命令:
type $env:USERPROFILE\.ssh\id_ed25519.pub |
ssh alok@192.168.45.100 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
此命令会把你的 Windows 公钥追加到虚拟机上的 ~/.ssh/authorized_keys。
测试免密码登录
ssh alok@192.168.45.100
你应该可以在不输入密码的情况下登录。
在 Ubuntu 端可以验证已授权的密钥:
cat ~/.ssh/authorized_keys
你会看到类似以下的条目:
ssh-rsa ... (older key)
ssh-ed25519 ... alok@DESKTOP-381CHVR (your Windows key)
加固权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
正确的权限是 SSH 接受密钥的前提。
加固 SSH 配置
先备份原始配置文件:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
编辑文件:
sudo vim /etc/ssh/sshd_config
添加或修改以下设置:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
KbdInteractiveAuthentication no
UsePAM yes
PermitRootLogin no
AllowUsers alok
这些设置实现了:
- 仅密钥认证
- 禁用密码登录
- 禁止 root 登录
- 仅允许用户
alok使用 SSH
应用更改
sudo systemctl restart ssh
验证加固后的设置
在 Windows 上:
ssh alok@192.168.45.100
应能成功连接。
在 Ubuntu 上,确认密码认证已关闭:
sudo sshd -T | grep -i passwordauthentication
预期输出:
passwordauthentication no
SSH 状态汇总
| 功能 | 状态 |
|---|---|
| SSH 访问 | ✅ 已启用 |
| 密码登录 | ❌ 已禁用 |
| 基于密钥的登录 | ✅ 已启用 |
| Root 登录 | ❌ 已禁用 |
用户限制(alok) | ✅ 已强制 |
| 已信任的主机验证 | ✅ 已信任 |
| 开机自动启动 SSH | ✅ 已启用 |
现在,你已经在 Ubuntu 虚拟机上拥有了生产级、DevOps 风格的 SSH 设置,并可安全地从 Windows 访问。 💪