在 WSL 的 Ubuntu 中安装和配置 SSH 服务

Windows Subsystem for Linux (WSL) 为开发者提供了在 Windows 环境中运行 Linux 的便利。本文将详细介绍如何在 WSL 的 Ubuntu 中安装、配置和管理 SSH 服务器,让你能够通过 SSH 远程连接到你的 Linux 环境。

1. 安装 OpenSSH 服务器

首先,我们需要安装 OpenSSH 服务器软件包:

bash 复制代码
sudo apt update
sudo apt install openssh-server

2. 启动 SSH 服务

安装完成后,启动 SSH 服务:

bash 复制代码
# 启动 SSH 服务
sudo systemctl start ssh

3. 设置 SSH 服务开机自启动

重要修正: 应该使用 Linux 系统的服务管理方式来设置自启动,而不是手动创建脚本。

bash 复制代码
# 启用 SSH 服务开机自启动
sudo systemctl enable ssh

# 验证自启动设置
sudo systemctl is-enabled ssh

如果输出显示 enabled,说明 SSH 服务已经设置为开机自启动。

4. 检查 SSH 服务状态

确认 SSH 服务是否正常运行:

bash 复制代码
# 检查服务状态
sudo systemctl status ssh

提示: 如果服务正常运行,你会看到绿色的 "active (running)" 状态信息。

5. 配置 SSH(可选但推荐)

编辑 SSH 配置文件以满足你的需求:

bash 复制代码
sudo vi /etc/ssh/sshd_config

重要配置项说明:

bash 复制代码
# 允许密码登录
PasswordAuthentication yes
# 允许 root 用户登录(谨慎使用)
PermitRootLogin yes
# 更改默认端口(提高安全性)
Port 2222
# 仅允许本地连接
ListenAddress 127.0.0.1
# 允许所有连接
ListenAddress 0.0.0.0

6. 重启 SSH 服务

修改配置后需要重启服务使更改生效:

bash 复制代码
# 重启SSH服务
sudo systemctl restart ssh

7. 设置用户密码

如果要使用密码登录,需要设置用户密码:

bash 复制代码
# 设置当前用户密码
passwd

# 设置 root 密码(如果允许 root 登录)
sudo passwd root

8. 防火墙配置

如果启用了防火墙,需要允许 SSH 连接:

bash 复制代码
# 安装 ufw
sudo apt install ufw
# 允许 SSH 连接
sudo ufw allow ssh
# 或指定端口
sudo ufw allow 22
# 启用防火墙
sudo ufw enable

9. Windows 防火墙配置

在 Windows 中允许 SSH 端口:

  1. 打开 Windows Defender 防火墙
  2. 点击"高级设置"
  3. 添加入站规则,允许 TCP 端口 22(或自定义端口)

10. 连接测试

从 Windows 连接:

bash 复制代码
# 使用 Windows 的 SSH 客户端
ssh username@localhost

# 如果更改了端口
ssh username@localhost -p 2222

从 WSL 内部测试:

bash 复制代码
ssh username@127.0.0.1

11. WSL 特殊情况处理

WSL 注意事项: WSL 的"开机自启动"概念与传统 Linux 系统不同,因为 WSL 实例只在需要时启动。

如果你发现 SSH 服务在 WSL 重启后没有自动启动,可以考虑以下解决方案:

方案一:使用 systemd(推荐用于 WSL 2)

确保 WSL 2 启用了 systemd 支持:

bash 复制代码
# 编辑 /etc/wsl.conf
[network]
generateResolvConf = false

[boot]
systemd = true

然后重启 WSL:

bash 复制代码
wsl --shutdown

方案二:创建 WSL 启动脚本

如果 systemd 不可用,可以创建一个简单的启动脚本:

bash 复制代码
# 编辑 ~/.bashrc 或 ~/.profile
# 添加以下内容到文件末尾
if service ssh status | grep -q "ssh start/running"; then
    echo "SSH already running"
else
    sudo service ssh start
fi

12. 常用管理命令

bash 复制代码
# 启动 SSH 服务
sudo systemctl start ssh
# 停止 SSH 服务
sudo systemctl stop ssh
# 重启 SSH 服务 
sudo systemctl restart ssh
# 查看 SSH 服务状态
sudo systemctl status ssh
# 启用开机自启动 
sudo systemctl enable ssh
# 禁用开机自启动 
sudo systemctl disable ssh
# 查看 SSH 进程 
ps aux | grep sshd`

故障排除

检查端口是否监听:

bash 复制代码
netstat -tuln | grep 22
# 或
ss -tuln | grep 22

查看 SSH 日志:

bash 复制代码
sudo journalctl -u ssh -f

# 或查看传统日志
sudo tail -f /var/log/auth.log

验证配置文件语法:

bash 复制代码
sudo sshd -t

WSL 2 网络问题解决:

如果从外部无法连接,可能需要配置 WSL 2 的网络:

bash 复制代码
# 编辑 /etc/wsl.conf
[network]
generateHosts = true

然后重启 WSL:

bash 复制代码
wsl --shutdown

安全建议

重要安全提示: 为了保护你的系统安全,建议采取以下措施:

  1. 使用密钥认证而不是密码认证
  2. 更改默认端口(22)以提高安全性
  3. 禁用 root 登录避免直接使用管理员账户
  4. 使用防火墙限制访问来源
  5. 定期更新系统保持软件版本最新

禁用 root SSH 登录(推荐):

bash 复制代码
# 编辑 SSH 配置
sudo vi /etc/ssh/sshd_config

# 设置为
PermitRootLogin no

使用密钥认证:

bash 复制代码
# 在客户端生成密钥对
ssh-keygen -t rsa -b 4096

# 将公钥复制到服务器
ssh-copy-id username@localhost

# 或手动复制
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

总结

通过以上步骤,你已经成功在 WSL Ubuntu 中安装并配置了 SSH 服务器。现在你可以通过 SSH 安全地远程连接到你的 WSL 环境,享受 Linux 开发的便利。

记住定期检查和更新你的安全配置,确保系统的安全性。

常见问题解答

Q: 为什么连接被拒绝?

A: 检查 SSH 服务是否启动、防火墙设置、端口配置是否正确。

Q: 如何更改 SSH 端口?

A: 在 /etc/ssh/sshd_config 中修改 Port 参数,然后重启服务。

Q: WSL 重启后 SSH 服务会自动启动吗?

A: 在 WSL 2 中启用 systemd 后,使用 sudo systemctl enable ssh 可以实现服务自启动。

Q: 如何完全卸载 SSH 服务器?

A: sudo apt remove openssh-server


本文档旨在帮助开发者在 WSL 环境中配置 SSH 服务器。请根据实际需求调整安全配置。

相关推荐
虾..5 小时前
Linux 软硬链接和动静态库
linux·运维·服务器
Evan芙5 小时前
Linux常见的日志服务管理的常见日志服务
linux·运维·服务器
꧁坚持很酷꧂7 小时前
解决虚拟机Ubuntu22.04连接了串口设备但终端没有显示
ubuntu
hkhkhkhkh1237 小时前
Linux设备节点基础知识
linux·服务器·驱动开发
HZero.chen8 小时前
Linux字符串处理
linux·string
张童瑶8 小时前
Linux SSH隧道代理转发及多层转发
linux·运维·ssh
汪汪队立大功1239 小时前
什么是SELinux
linux
石小千9 小时前
Linux安装OpenProject
linux·运维
柏木乃一9 小时前
进程(2)进程概念与基本操作
linux·服务器·开发语言·性能优化·shell·进程
Lime-30909 小时前
制作Ubuntu 24.04-GPU服务器测试系统盘
linux·运维·ubuntu