ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ubuntu Server 22.04 LTS 从零部署与SSH、远程桌面配置全指南

Ubuntu Server 22.04 LTS 从零部署与SSH、远程桌面配置全指南

1. 项目概述:从零开始部署Ubuntu Server并实现远程管理

最近在帮朋友的公司搭建一套内部测试环境,核心需求是找一台性能还不错的旧电脑,安装一个稳定、轻量且能长期运行的操作系统作为服务器。在对比了CentOS Stream、Debian和Ubuntu Server之后,我们最终选择了Ubuntu Server 22.04 LTS。理由很直接:LTS版本提供长达5年的标准支持,社区资源极其丰富,遇到任何问题几乎都能找到现成的解决方案,这对于运维经验不那么丰富的团队来说,就是最大的定心丸。这个项目看似基础——不就是装个系统、开个远程登录吗?但实际操作中,从镜像选择、分区规划到SSH安全加固、远程桌面优化,每一步都有不少细节值得琢磨。踩过几个坑之后,我决定把这次从裸机到可远程安全管理的完整过程记录下来,特别是那些官方文档可能一笔带过,但对实际稳定性至关重要的“民间”技巧。

无论你是想在家里的旧电脑上搭建一个个人网盘、开发测试环境,还是为小型团队部署内部应用服务器,这篇文章都能提供一个清晰的路线图。我们会覆盖最主流的两种远程管理方式:基于命令行的SSH基于图形界面的远程桌面,并深入探讨如何根据你的实际需求和安全考量来选择和配置它们。整个过程我会尽量模拟真实操作环境,把命令、配置文件和可能遇到的错误都摊开来讲清楚。

2. 系统安装前的核心准备与规划

安装系统就像盖房子,地基打得好,后面住着才省心。很多人拿到ISO镜像就直接开装,到了分区或者网络配置步骤才手忙脚乱。我们先花点时间,把准备工作做扎实。

2.1 镜像选择与启动盘制作

首先面临的是版本选择。Ubuntu Server 24.04 LTS已经发布,但作为生产环境或需要绝对稳定的场景,我依然推荐Ubuntu Server 22.04 LTS。LTS代表长期支持,在它的生命周期内,你会收到重要的安全更新和错误修复,但系统核心和主要软件包版本保持相对稳定,避免了因频繁升级带来的兼容性风险。你可以从Ubuntu官网的下载页面找到它,注意选择“Ubuntu Server”而非“Ubuntu Desktop”。

制作启动盘推荐使用Rufus(Windows)或balenaEtcher(跨平台)。这里有个关键细节:用Rufus写入镜像时,如果遇到提示“以DD镜像模式写入吗?”,对于Ubuntu Server的ISO,请选择“是”。这是因为Server镜像通常采用混合ISO格式,DD模式能确保引导信息被正确写入,避免安装时出现“无法找到引导设备”的错误。另一个小技巧是,在制作前最好用sha256sum命令(Linux/macOS)或校验工具(Windows)核对一下下载镜像的哈希值,与官网公布的值一致再使用,可以杜绝因下载文件损坏导致的安装失败。

2.2 硬件与环境预检

安装前,最好进入主板的BIOS/UEFI设置界面检查几个关键项:

  1. 启动模式:确认你的硬盘分区表类型。如果是较新的电脑(通常是2015年以后),建议使用UEFI模式配合GPT分区表,它比传统的Legacy BIOS + MBR组合更现代,支持更大的硬盘和更安全的启动。在BIOS中关闭“CSM”(兼容性支持模块)可以强制系统以纯UEFI模式启动。
  2. 虚拟化支持:如果你未来可能在这台服务器上运行Docker或KVM虚拟机,需要确保CPU的虚拟化技术(Intel VT-x / AMD-V)在BIOS中是启用状态。
  3. 网络连接:确保服务器在安装位置可以通过网线连接到路由器或交换机。虽然Ubuntu Server安装器支持Wi-Fi,但有线连接在安装过程中更加稳定可靠,避免驱动问题导致的断连。

注意:对于服务器,我强烈建议全程使用有线网络。无线网络在遇到波动时,可能导致安装过程中下载更新或软件包失败,使得安装不完整。

2.3 安装规划:分区与软件选择

启动安装程序后,在分区环节需要一些思考。对于大多数单盘服务器,我推荐以下分区方案,它在简单性和灵活性之间取得了很好的平衡:

挂载点建议大小文件系统说明
/boot/efi512 MB - 1 GBFAT32仅UEFI模式需要。存放系统引导文件。
/(根目录)剩余空间的 70%-80%EXT4存放系统文件和安装的软件。
swap(交换空间)物理内存的 1-2倍swap内存不足时的缓冲。如果内存很大(如32GB以上),可以等于或略小于内存。
/home(用户目录)剩余空间EXT4存放用户数据和网站文件等。独立分区后,重装系统时可保留数据。

这个方案的优势在于,将系统(/)、数据(/home)和交换空间(swap)分离。以后如果系统盘空间不足,或者需要重装系统,可以只格式化根分区而保留/home分区中的数据,大大降低了维护风险。

在“Featured Server Snaps”选择界面,安装器会提供一些预配置的软件栈,如Docker、MicroK8s、LAMP等。我的建议是:除非你非常确定需要,否则一个都不要勾选。保持系统最小化安装,后续需要什么再通过apt命令安装,这样系统最纯净,也减少了初始安装的复杂度和潜在冲突。我们完全可以在系统安装完成后,再从容地部署所需的服务。

3. 首次启动与基础系统配置

系统安装完成后重启,你会看到一个黑色的命令行登录界面。别慌,这才是服务器的常态。用你安装时创建的用户名和密码登录。

3.1 必不可少的初始操作

登录后第一件事,不是急着装软件,而是更新系统。这能确保你获得最新的安全补丁和软件源信息。

# 1. 更新软件包列表 sudo apt update # 2. 升级所有已安装的软件包到最新版本 sudo apt upgrade -y # 3. 如果有内核更新,可以执行以下命令并重启(可选,但推荐) sudo apt dist-upgrade -y sudo reboot

apt update是刷新本地的软件包索引,让它和远程仓库同步。apt upgrade是实际升级软件包。-y参数表示自动回答“yes”,避免在升级大量包时频繁确认。dist-upgrade会更智能地处理依赖关系的变化,在涉及内核升级时尤其有用。

接下来,建议安装几个基础但极其有用的工具:

sudo apt install -y net-tools htop vim curl wget git
  • net-tools: 包含老牌但好用的ifconfignetstat命令。
  • htop: 一个增强版的进程查看器,比top更直观。
  • vim: 强大的文本编辑器,在服务器上编辑配置文件的利器。
  • curl&wget: 从网络下载文件的工具。
  • git: 版本控制工具,方便拉取代码。

3.2 网络配置与静态IP地址设定

服务器通常需要一个固定的IP地址,以便其他设备能稳定地访问它。Ubuntu 22.04 使用netplan来管理网络,配置文件位于/etc/netplan/目录下,文件名可能是00-installer-config.yaml01-netcfg.yaml

首先,查看当前网络接口名称和获取的IP:

ip addr show

通常,有线网卡名是ens33enp3s0eth0

然后,编辑Netplan配置文件:

sudo vim /etc/netplan/00-installer-config.yaml

假设你的网络环境是:路由器网关是192.168.1.1,你想给服务器分配192.168.1.100,DNS服务器使用谷歌的8.8.8.88.8.4.4。配置文件内容应类似如下(请根据你的实际接口名和网络环境修改):

network: version: 2 ethernets: ens33: # 你的网卡名称 dhcp4: no # 关闭DHCP addresses: [192.168.1.100/24] # 静态IP和子网掩码 routes: - to: default via: 192.168.1.1 # 网关地址 nameservers: addresses: [8.8.8.8, 8.8.4.4] # DNS服务器

注意:YAML文件对缩进非常敏感,必须使用空格,不能使用Tab键。每个层级通常缩进两个空格。

保存并退出编辑器后,应用新的网络配置:

sudo netplan apply

如果配置有误导致网络断开,可以使用sudo netplan --debug apply来查看详细错误信息。配置成功后,再次使用ip addr show ens33检查IP是否已变更为你设置的静态地址,并尝试ping 8.8.8.8测试网络连通性。

4. 核心环节一:配置SSH服务实现安全命令行远程登录

SSH是管理Linux服务器的生命线。它加密所有通信内容,防止密码和命令被窃听。Ubuntu Server在安装时通常已经安装了OpenSSH服务器端,但默认配置可能不够安全。

4.1 安装与验证SSH服务

首先确认SSH服务是否已安装并运行:

# 检查openssh-server包是否已安装 dpkg -l | grep openssh-server # 如果未安装,则安装它 sudo apt install -y openssh-server # 检查SSH服务状态 sudo systemctl status ssh

你应该看到状态为active (running)。如果未运行,使用sudo systemctl start ssh启动它,并使用sudo systemctl enable ssh设置开机自启。

4.2 关键安全配置:编辑sshd_config

SSH的主配置文件是/etc/ssh/sshd_config。在修改前,务必备份原文件sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.backup。然后进行编辑:

sudo vim /etc/ssh/sshd_config

找到并修改以下几行,这是提升安全性的基础操作:

# 禁止root用户直接登录。先用普通用户登录,再用su或sudo提权更安全。 PermitRootLogin no # 限制SSH协议版本为更安全的SSH-2 Protocol 2 # 修改默认端口(例如改为2222)。这能减少自动化脚本的攻击。 Port 2222 # 禁止使用空密码登录 PermitEmptyPasswords no # 设置登录失败次数限制(需配合pam模块,Ubuntu默认已配置) MaxAuthTries 3 # 可选但推荐:禁用密码登录,强制使用密钥认证(配置密钥后再开启此项) # PasswordAuthentication no # PubkeyAuthentication yes

修改端口是一个简单有效的安全措施。但记住,修改后连接命令需要指定端口,例如ssh -p 2222 user@server_ip

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

sudo systemctl restart ssh

重要提醒:在禁用密码登录(PasswordAuthentication no)之前,必须先配置好SSH密钥并测试能够成功登录。否则你会把自己锁在服务器外面!

4.3 配置SSH密钥认证(免密登录)

密钥认证比密码更安全,且能实现免密登录,方便自动化脚本。整个过程在客户端(你的电脑)生成密钥对,将公钥上传到服务器。

1. 在客户端生成密钥对(在你自己电脑上操作): 如果你使用Windows 10/11,可以使用内置的PowerShell或安装Git Bash。Linux/macOS直接在终端操作。

ssh-keygen -t ed25519 -C "your_email@example.com"

-t ed25519指定使用Ed25519算法,它比传统的RSA更安全、更快。执行命令后,会提示你输入保存密钥的文件名(直接回车使用默认位置~/.ssh/id_ed25519)和设置密钥的密码(passphrase)。设置密码可以为密钥再加一层保护,但每次使用都需要输入。对于自动化场景,可以不设密码(直接回车两次)。

2. 将公钥上传到服务器: 使用ssh-copy-id命令是最简单的方法(如果你的客户端支持):

ssh-copy-id -p 2222 user@server_ip # 如果修改了SSH端口,记得加上 -p

它会自动将你本地的公钥(~/.ssh/id_ed25519.pub)内容追加到服务器对应用户的~/.ssh/authorized_keys文件中。

如果ssh-copy-id不可用,可以手动操作:

# 在客户端查看公钥内容 cat ~/.ssh/id_ed25519.pub # 复制输出的全部内容(很长的一串) # 然后登录服务器,编辑 authorized_keys 文件 ssh -p 2222 user@server_ip mkdir -p ~/.ssh # 如果目录不存在则创建 echo “你复制的公钥内容” >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 必须设置严格的权限

3. 测试密钥登录: 退出服务器,在客户端尝试登录:

ssh -p 2222 user@server_ip

如果配置正确,应该不需要输入用户密码就能直接登录(如果密钥设置了passphrase,则需要输入)。

4. 最终加固:禁用密码登录: 确认密钥登录无误后,回到服务器的sshd_config文件,将PasswordAuthentication设置为no,然后重启SSH服务。从此,只有拥有私钥的人才能登录,安全性大大提升。

5. 核心环节二:安装图形界面与配置远程桌面

虽然SSH对于运维已经足够,但有些图形化工具或调试工作,有一个桌面环境会更方便。Ubuntu Server本身没有图形界面,我们需要手动安装。

5.1 安装Ubuntu Desktop或轻量级桌面

方案A:安装完整的Ubuntu Desktop(资源消耗较大)

sudo apt update sudo apt install -y ubuntu-desktop

这会安装GNOME桌面及其全套应用,安装包较大(约2GB),完成后需要重启服务器。

方案B:安装轻量级的Xfce桌面(推荐用于远程桌面)对于远程桌面访问,一个轻量级的桌面环境体验更流畅。Xfce是一个很好的选择。

sudo apt update sudo apt install -y xfce4 xfce4-goodies

安装体积远小于完整版Ubuntu Desktop。

5.2 安装并配置xRDP服务

xRDP是一个开源的RDP(远程桌面协议)服务器,允许你使用Windows自带的“远程桌面连接”或macOS/Linux下的RDP客户端(如Remmina)来连接。

sudo apt install -y xrdp sudo systemctl enable --now xrdp

安装后,xRDP服务会监听默认的3389端口。但是,直接连接可能会遇到黑屏、闪退或者登录后只有灰色背景的问题。这是因为xRDP需要知道启动哪个桌面环境。

解决xRDP登录问题: 编辑xRDP的启动脚本,明确指定使用Xfce(如果你安装的是Xfce):

echo “xfce4-session” > ~/.xsession # 或者,更推荐的做法是修改全局配置 sudo vim /etc/xrdp/startwm.sh

/etc/xrdp/startwm.sh文件中,找到test -x /etc/X11/Xsession这一行,在它之前添加一行:

startxfce4

保存文件,然后重启xRDP服务:

sudo systemctl restart xrdp

5.3 配置防火墙(如果启用)

Ubuntu 22.04 默认使用ufw作为防火墙前端。如果启用了防火墙,需要放行SSH和RDP端口。

# 启用UFW(如果未启用) sudo ufw enable # 放行SSH端口(如果你修改了端口,例如2222) sudo ufw allow 2222/tcp # 放行RDP默认端口 sudo ufw allow 3389/tcp # 查看规则状态 sudo ufw status verbose

现在,你可以在局域网内的另一台电脑上,使用远程桌面客户端连接服务器的IP地址了。连接时,使用你在Ubuntu Server上创建的系统用户名和密码。

实操心得:对于服务器,我个人的习惯是,除非必要,否则不安装图形界面。大部分管理工作通过SSH完成,效率更高,资源占用更少。图形界面仅作为备用或运行特定GUI工具时使用。安装Xfce + xRDP的组合,比完整Ubuntu Desktop更适合远程桌面场景。

6. 高级配置与运维技巧

基础服务搭好后,一些优化配置能让你的服务器用起来更顺手、更安全。

6.1 时间同步与时区设置

服务器时间准确对于日志分析、证书验证等都至关重要。

# 安装NTP服务(Ubuntu 22.04 默认使用systemd-timesyncd,但安装ntp可以提供更多控制) sudo apt install -y ntp # 设置时区(例如设置为亚洲上海时间) sudo timedatectl set-timezone Asia/Shanghai # 启用NTP时间同步 sudo timedatectl set-ntp true # 查看时间状态 timedatectl status

6.2 配置Swap交换空间(如果安装时未分配或不足)

如果安装时忘记分配swap,或者内存紧张,可以手动创建swap文件。

# 1. 创建一个4GB大小的空文件(大小可根据需要调整,例如count=4096表示4GB) sudo fallocate -l 4G /swapfile # 2. 设置正确的权限 sudo chmod 600 /swapfile # 3. 格式化为swap sudo mkswap /swapfile # 4. 启用swap文件 sudo swapon /swapfile # 5. 使其永久生效,编辑 /etc/fstab 文件,在末尾添加一行 echo ‘/swapfile none swap sw 0 0’ | sudo tee -a /etc/fstab # 6. 验证swap是否生效 sudo swapon --show free -h

6.3 系统监控与日志查看

了解如何快速查看系统状态和问题日志。

  • 实时监控:使用安装好的htop。它用颜色区分CPU、内存、Swap使用率,可以排序进程,还能直接杀死进程(F9键),比top直观得多。
  • 查看启动日志sudo journalctl -b查看本次启动的日志。sudo journalctl -f可以实时追踪最新的系统日志。
  • 查看特定服务日志:例如查看SSH登录日志sudo journalctl -u ssh。查看失败的登录尝试sudo grep “Failed password” /var/log/auth.log
  • 查看磁盘空间df -h查看磁盘使用情况。du -sh *查看当前目录下各文件夹大小。

6.4 SSH连接优化与保活

在客户端(不是服务器)的SSH配置文件中进行一些设置,可以提升连接体验。编辑客户端的~/.ssh/config文件(没有则创建):

Host myserver # 给你的服务器起个别名 HostName 192.168.1.100 # 服务器IP Port 2222 # SSH端口 User your_username # 登录用户名 IdentityFile ~/.ssh/id_ed25519 # 私钥路径 ServerAliveInterval 60 # 每60秒发送一个保活包,防止连接超时断开 ServerAliveCountMax 3 # 服务器无响应次数达到3次则断开

这样配置后,你只需要在客户端输入ssh myserver就能连接,无需再输入IP、端口和用户名。

7. 常见问题与故障排查实录

在实际操作中,你几乎一定会遇到下面这些问题。我把它们和解决方法整理出来,希望能帮你节省大量搜索时间。

7.1 SSH连接失败问题排查

问题1:连接被拒绝(Connection refused)

ssh: connect to host 192.168.1.100 port 22: Connection refused
  • 可能原因1:SSH服务未运行。解决:登录服务器(如果是本地),检查sudo systemctl status ssh
  • 可能原因2:防火墙阻止。解决:检查服务器防火墙规则sudo ufw status。如果是云服务器,还需检查安全组/防火墙规则。
  • 可能原因3:修改了SSH端口但连接时未指定。解决:使用ssh -p <端口号> user@ip

问题2:权限被拒绝(Permission denied)

Permission denied (publickey,password).
  • 可能原因1:服务器已禁用密码登录,而你未配置密钥。解决:通过服务器控制台(如物理机显示器、云服务器VNC)登录,检查/etc/ssh/sshd_configPasswordAuthentication是否为yes,或正确配置SSH密钥。
  • 可能原因2~/.ssh/authorized_keys文件权限不对。解决:确保权限为600,所属目录权限为700
  • 可能原因3:SELinux(某些发行版)或AppArmor阻止。解决:暂时禁用或配置相应策略(Ubuntu默认使用AppArmor,但通常不会阻止SSH)。

7.2 xRDP远程桌面连接问题

问题1:能登录,但登录后黑屏或灰屏,然后闪退

  • 原因:xRDP无法正确启动桌面会话。解决:这是最常见的问题,按照前面5.2章节的方法,在/etc/xrdp/startwm.sh中明确指定桌面环境命令(如startxfce4)。

问题2:连接时提示“出现内部错误”或“为安全考虑,已锁定该用户账户”

  • 原因:可能是多次登录失败触发PAM安全机制,或用户家目录权限问题。解决
    1. 检查/var/log/auth.log/var/log/xrdp.log获取具体错误。
    2. 尝试用SSH登录同一用户,看是否被锁定。可用sudo pam_tally2 --user=用户名 --reset重置失败计数。
    3. 确保用户家目录(/home/用户名)的属主和权限正确。

问题3:连接非常卡顿

  • 原因:网络带宽不足或桌面环境太重。解决
    1. 在RDP客户端中,尝试降低颜色深度和显示分辨率。
    2. 使用更轻量的桌面环境(如Xfce,而不是GNOME或KDE)。
    3. 关闭桌面环境的动画和特效。

7.3 系统更新与软件安装问题

问题:sudo apt update失败,提示“无法连接上...”、“Hash Sum mismatch”等

  • 可能原因1:网络问题或软件源服务器暂时不可用。解决:更换软件源镜像。编辑/etc/apt/sources.list文件,将archive.ubuntu.comsecurity.ubuntu.com替换为国内镜像,如阿里云镜像mirrors.aliyun.com。替换后再次执行sudo apt update
  • 可能原因2:系统时间不正确。解决:使用date命令检查,并通过sudo timedatectl set-ntp true同步时间。

7.4 忘记用户密码或sudo权限

如果你有root权限或另一个有sudo权限的用户,可以重置密码:

# 切换到root用户(如果知道root密码) su - # 或者用另一个sudo用户 sudo passwd 要重置的用户名

如果所有用户密码都忘了,且能物理接触服务器,可以在GRUB引导时进入恢复模式(Recovery Mode)重置。这是一个“救命”技巧,但前提是你能接触到服务器控制台。

整个流程走下来,从一块空白硬盘到一台可以通过SSH安全登录、甚至能远程桌面访问的Ubuntu Server就搭建完成了。这套组合拳——SSH用于日常高效运维,RDP用于偶尔的图形化操作——基本能满足绝大多数个人和小型团队的服务器管理需求。最关键的是,每一步的安全配置都不要跳过,特别是修改SSH默认端口、使用密钥登录和设置防火墙规则,这些是服务器暴露在网络上最基本的“盔甲”。

返回列表