ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

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

2026/8/15 1:50:30 拓冰建站 浏览量
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”。制作启动盘推荐使用RufusWindows或balenaEtcher跨平台。这里有个关键细节用Rufus写入镜像时如果遇到提示“以DD镜像模式写入吗”对于Ubuntu Server的ISO请选择“是”。这是因为Server镜像通常采用混合ISO格式DD模式能确保引导信息被正确写入避免安装时出现“无法找到引导设备”的错误。另一个小技巧是在制作前最好用sha256sum命令Linux/macOS或校验工具Windows核对一下下载镜像的哈希值与官网公布的值一致再使用可以杜绝因下载文件损坏导致的安装失败。2.2 硬件与环境预检安装前最好进入主板的BIOS/UEFI设置界面检查几个关键项启动模式确认你的硬盘分区表类型。如果是较新的电脑通常是2015年以后建议使用UEFI模式配合GPT分区表它比传统的Legacy BIOS MBR组合更现代支持更大的硬盘和更安全的启动。在BIOS中关闭“CSM”兼容性支持模块可以强制系统以纯UEFI模式启动。虚拟化支持如果你未来可能在这台服务器上运行Docker或KVM虚拟机需要确保CPU的虚拟化技术Intel VT-x / AMD-V在BIOS中是启用状态。网络连接确保服务器在安装位置可以通过网线连接到路由器或交换机。虽然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 rebootapt update是刷新本地的软件包索引让它和远程仓库同步。apt upgrade是实际升级软件包。-y参数表示自动回答“yes”避免在升级大量包时频繁确认。dist-upgrade会更智能地处理依赖关系的变化在涉及内核升级时尤其有用。接下来建议安装几个基础但极其有用的工具sudo apt install -y net-tools htop vim curl wget gitnet-tools: 包含老牌但好用的ifconfig、netstat命令。htop: 一个增强版的进程查看器比top更直观。vim: 强大的文本编辑器在服务器上编辑配置文件的利器。curlwget: 从网络下载文件的工具。git: 版本控制工具方便拉取代码。3.2 网络配置与静态IP地址设定服务器通常需要一个固定的IP地址以便其他设备能稳定地访问它。Ubuntu 22.04 使用netplan来管理网络配置文件位于/etc/netplan/目录下文件名可能是00-installer-config.yaml或01-netcfg.yaml。首先查看当前网络接口名称和获取的IPip addr show通常有线网卡名是ens33、enp3s0或eth0。然后编辑Netplan配置文件sudo vim /etc/netplan/00-installer-config.yaml假设你的网络环境是路由器网关是192.168.1.1你想给服务器分配192.168.1.100DNS服务器使用谷歌的8.8.8.8和8.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_configSSH的主配置文件是/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 userserver_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_emailexample.com-t ed25519指定使用Ed25519算法它比传统的RSA更安全、更快。执行命令后会提示你输入保存密钥的文件名直接回车使用默认位置~/.ssh/id_ed25519和设置密钥的密码passphrase。设置密码可以为密钥再加一层保护但每次使用都需要输入。对于自动化场景可以不设密码直接回车两次。2. 将公钥上传到服务器 使用ssh-copy-id命令是最简单的方法如果你的客户端支持ssh-copy-id -p 2222 userserver_ip # 如果修改了SSH端口记得加上 -p它会自动将你本地的公钥~/.ssh/id_ed25519.pub内容追加到服务器对应用户的~/.ssh/authorized_keys文件中。如果ssh-copy-id不可用可以手动操作# 在客户端查看公钥内容 cat ~/.ssh/id_ed25519.pub # 复制输出的全部内容很长的一串 # 然后登录服务器编辑 authorized_keys 文件 ssh -p 2222 userserver_ip mkdir -p ~/.ssh # 如果目录不存在则创建 echo “你复制的公钥内容” ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 必须设置严格的权限3. 测试密钥登录 退出服务器在客户端尝试登录ssh -p 2222 userserver_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如果你安装的是Xfceecho “xfce4-session” ~/.xsession # 或者更推荐的做法是修改全局配置 sudo vim /etc/xrdp/startwm.sh在/etc/xrdp/startwm.sh文件中找到test -x /etc/X11/Xsession这一行在它之前添加一行startxfce4保存文件然后重启xRDP服务sudo systemctl restart xrdp5.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 status6.2 配置Swap交换空间如果安装时未分配或不足如果安装时忘记分配swap或者内存紧张可以手动创建swap文件。# 1. 创建一个4GB大小的空文件大小可根据需要调整例如count4096表示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 -h6.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 refusedssh: connect to host 192.168.1.100 port 22: Connection refused可能原因1SSH服务未运行。解决登录服务器如果是本地检查sudo systemctl status ssh。可能原因2防火墙阻止。解决检查服务器防火墙规则sudo ufw status。如果是云服务器还需检查安全组/防火墙规则。可能原因3修改了SSH端口但连接时未指定。解决使用ssh -p 端口号 userip。问题2权限被拒绝Permission deniedPermission denied (publickey,password).可能原因1服务器已禁用密码登录而你未配置密钥。解决通过服务器控制台如物理机显示器、云服务器VNC登录检查/etc/ssh/sshd_config中PasswordAuthentication是否为yes或正确配置SSH密钥。可能原因2~/.ssh/authorized_keys文件权限不对。解决确保权限为600所属目录权限为700。可能原因3SELinux某些发行版或AppArmor阻止。解决暂时禁用或配置相应策略Ubuntu默认使用AppArmor但通常不会阻止SSH。7.2 xRDP远程桌面连接问题问题1能登录但登录后黑屏或灰屏然后闪退原因xRDP无法正确启动桌面会话。解决这是最常见的问题按照前面5.2章节的方法在/etc/xrdp/startwm.sh中明确指定桌面环境命令如startxfce4。问题2连接时提示“出现内部错误”或“为安全考虑已锁定该用户账户”原因可能是多次登录失败触发PAM安全机制或用户家目录权限问题。解决检查/var/log/auth.log或/var/log/xrdp.log获取具体错误。尝试用SSH登录同一用户看是否被锁定。可用sudo pam_tally2 --user用户名 --reset重置失败计数。确保用户家目录/home/用户名的属主和权限正确。问题3连接非常卡顿原因网络带宽不足或桌面环境太重。解决在RDP客户端中尝试降低颜色深度和显示分辨率。使用更轻量的桌面环境如Xfce而不是GNOME或KDE。关闭桌面环境的动画和特效。7.3 系统更新与软件安装问题问题sudo apt update失败提示“无法连接上...”、“Hash Sum mismatch”等可能原因1网络问题或软件源服务器暂时不可用。解决更换软件源镜像。编辑/etc/apt/sources.list文件将archive.ubuntu.com和security.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默认端口、使用密钥登录和设置防火墙规则这些是服务器暴露在网络上最基本的“盔甲”。