Ubuntu服务器初始化:root权限、apt换源、SSH、主机名与时区配置

发布时间:2026/10/17 9:03:10
Ubuntu服务器初始化:root权限、apt换源、SSH、主机名与时区配置 新装完一台Ubuntu服务器或者在虚拟机里刚把系统装好接下来要做的往往不是急着部署业务而是一整套“热身操作”开启root权限、理清apt和apt-get的关系、把软件源换成国内镜像、装好并启用SSH、改掉默认主机名、校准系统时区。这六件事单独拆开都不难但组合起来就是一台能长期稳定使用的基础服务器。我见过不少人在这一步卡住换源后apt update报404、SSH服务装了却连不上、时区改完日志时间还是差好几个小时。这篇文章按照我自己实际初始化机器的顺序把每条命令的用途、背后的原理以及操作过程中踩过的坑都展开说一遍。不管你是第一次接触Ubuntu还是需要批量维护一批服务器照着这个流程走一遍后面真的能省下很多折腾时间。1. 新装系统的“地基”初始化操作的顺序与取舍1.1 为什么偏偏是这六件事新安装的Ubuntu有几个默认状态很容易被忽略。root账户根本没有设置过密码你直接输入su会提示认证失败软件源指向海外官方仓库下载速度随缘openssh-server默认没有安装远程工具根本连不进来主机名是一串随机生成的长名称系统时区固定为UTC和中国时区差八个小时。这些状态单独看都不致命但叠加在一起足以让后续每一步操作都很难受。我最早接触服务器时犯过一个典型错误装完系统后直接开始装软件结果大量时间耗在等待apt下载上。后来才意识到软件源决定了下拉速度换源必须排在软件安装前面。正确顺序大致是先换源再做需要依赖apt安装的操作比如装SSH最后处理主机名和时区这类独立配置。1.2 开发机与生产环境的配置差异如果你只是本地虚拟机随便折腾root、SSH这些怎么改都无所谓怎么方便怎么来。但如果是生产环境或者多人的服务器我的建议完全相反不要急着开root密码登录先创建一个普通用户日常操作走sudoSSH远程登录优先用密钥认证而不是密码root只在特别需要系统级变更时临时使用。Ubuntu把root密码留空本身就是一种安全设计。日常操作被sudo收敛到几个有授权的账户上所有提权行为都有日志可查。一旦放开root密码又允许SSH远程登录密码认证这台机器就相当于把大门钥匙挂在了门口。开发环境怎么折腾都可以生产环境宁可先锁死也不要贪图一时方便。2. 开启root一行passwd命令背后的权限设计2.1 为什么Ubuntu安装时不让你设置root密码很多从Windows或CentOS转过来的同学第一次在Ubuntu上执行su会看到“认证失败”的提示第一反应是自己密码输错了。其实不是是root根本还没有密码。Ubuntu安装过程刻意跳过了root密码设置环节让你用安装时创建的那个普通账户完成日常操作需要管理员权限时临时通过sudo提权。这背后的逻辑是普通账户权限有限即使被攻破破坏范围也可控而root拥有系统全部权限root密码一旦泄露后果是灾难性的。sudo的日志还能告诉你谁在什么时候执行了什么特权命令这个审计能力是直接使用root没法比的。2.2 开启root的标准操作与验证要开启root最简单的就是在终端里执行sudo passwd root系统会先要求你输入当前用户的sudo密码然后让你设置root的新密码。注意这里输入的root密码要足够强壮因为到了这一步root就不再是“没有密码”的状态了。设置完成后可以验证一下su - whoami输出显示root就说明切换成功。也可以用sudo -i直接进入root shell效果类似但不依赖root密码本质还是sudo提权。在日常使用中我更推荐sudo -i这种方式因为root密码设了之后反而不需要频繁用到它。2.3 远程登录root的额外门槛如果你的目标是通过SSH远程登录root光是设置密码还不够。Ubuntu的OpenSSH配置/etc/ssh/sshd_config里默认的PermitRootLogin是prohibit-password意思是root不能通过密码远程登录但允许密钥登录。这个设计比彻底关闭更灵活——你仍然可以用root的密钥远程登录但密码登录被禁止暴力破解的威胁直接小了一大截。如果确实想在测试环境里允许root密码远程登录需要手动改成yes然后重启SSH服务。但这一步在生产环境我强烈建议不要做。宁可平时普通用户加sudo真需要root级别的远程操作时再采取更安全的接入方式。3. apt与apt-get两种命令同一套软件仓库3.1 从apt-get到apt命令行工具的演进用过一段时间Linux就会注意到有些教程让你用apt-get有些教程让你用apt两者很多行为看起来一样。实际上apt-get是上世纪90年代就存在的经典包管理工具语法稳定输出格式多年不变apt是后来整合出来的前端把install、remove、search这些常用功能做了统一输出带颜色和进度条交互提示更友好比如它会告诉你哪些包可以自动移除。日常敲命令我基本都用apt。但写脚本的时候我仍然倾向用apt-get。原因很简单apt-get的输出格式和退出码多年稳定脚本解析不容易出错而apt的输出有时会因为版本升级产生细微变化影响自动化判断。3.2 核心命令的对应关系两者的常用命令基本一一对应功能aptapt-get刷新软件索引apt updateapt-get update升级软件包apt upgradeapt-get upgrade安装包apt install 包名apt-get install 包名删除包apt remove 包名apt-get remove 包名搜索包apt search 关键词apt-cache search 关键词查看包信息apt show 包名apt-cache show 包名搜索和查看信息在apt-get那边其实不是apt的子命令而是独立的apt-cache这也是很多人困惑的地方。3.3 update和upgrade最容易犯的误解我见过不少新手把update当成“升级软件”执行完发现什么都没变。这两个词的语义完全不同apt update只从软件源拉取最新的软件包索引不安装、不升级任何东西。apt upgrade根据索引对比当前系统已经安装的包把有新版本的包升级。apt dist-upgrade比upgrade更进一步允许安装新依赖、移除冲突的旧包。也就是说upgrade成功的前提是update已经把索引刷新到了最新状态。在完成软件源更换之后必须执行一次apt update否则apt根本不知道新源里有什么包。dist-upgrade功能更强但也可能卸载一些包执行前一定要仔细看它列出的“将被移除”列表不要无脑回车。3.4 缓存与清理apt下载的deb包会缓存到/var/cache/apt/archives目录。系统用得越久这个目录可能越大。清理方式有两个sudo apt clean sudo apt autoremoveclean是清空所有下载缓存autoremove是移除那些因为安装依赖被带上、但现在已经没用的孤立包。我会在批量装完软件后顺手跑一次autoremove让系统保持干净。这个习惯在磁盘较小的云主机上尤其值得养成。4. 换源这件事让apt下载从“龟速”回到正常速度4.1 默认源为什么慢Ubuntu默认的软件源地址指向的是官方维护的仓库服务器。官方仓库托管的机器主要面向全球用户本来不是为某一个地区专门优化的跨越大洋的链路延迟和丢包率一起拉高之后下载速度就会变得很难看。尤其是需要拉取大量依赖包的时候等待时间会被成倍放大。国内镜像站的原理并不复杂它们把官方仓库的内容定时同步一份到自己这边国内网络访问这些节点走的是更近的网络路径速度自然快得多。4.2 动手第一件事备份原始文件换源之前一定要先备份。这不是形式主义而是给自己留退路sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak万一新源写错或者换完发现某个镜像更新不及时一条命令就能恢复现场sudo cp /etc/apt/sources.list.bak /etc/apt/sources.list很多老手在初始化脚本里也会保留这个备份步骤不是为了看是给排查问题当参照。4.3 版本代号必须对得上Ubuntu每两年发布一个长期支持版本每个版本都有自己的代号源地址路径里必须带这个代号。最常见的几个Ubuntu版本代号20.04 LTSfocal22.04 LTSjammy24.04 LTSnoble如果从网上复制一段源配置却用在了不符的版本上执行apt update就会看到一堆404 Not Found根源就是路径里的代号不对。换源前先确认一下当前系统版本lsb_release -a拿到Codename再去套对应源地址就不会犯这个低级错误。4.4 手写源与sed批量替换修改sources.list有两种常见方式。第一种是把整个文件重写掉结构清晰适合初始化阶段直接套用。以22.04jammy为例国内镜像的写法大致是sudo tee /etc/apt/sources.list EOF deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse EOFmain、restricted、universe、multiverse是软件仓库里的不同组件简单理解成不同授权和更新级别的软件集合即可。普通用户环境下四行全写上最省心。第二种是用sed批量替换域名适合只想把默认源换成镜像源、保留原有套件结构的情况sudo sed -i s|http://archive.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g /etc/apt/sources.list sudo sed -i s|http://security.ubuntu.com/ubuntu/|https://mirrors.aliyun.com/ubuntu/|g /etc/apt/sources.list替换时注意security的URL语义要保留。有些教程把security也直接替换成不带-security的路径会导致安全更新源缺失这是很隐蔽的坑。4.5 同一个镜像站不同的使用体验如果问哪个镜像最好用我的回答是稳定、同步快、你访问着快就是好镜像。就个人体验来说云厂商提供的镜像源普遍稳定性较好校园网环境下一些高校镜像也很可靠。我整理过自己几个常用的源镜像站速度体验同步稳定性使用建议阿里云多数网络环境快稳定默认优先清华TUNA部分地区高峰波动稳定网络环境好时首选中科大网络波动较大稳定备选切换我不建议在多个源之间反复横跳。每切换一次就要重新apt update而且不同镜像的同步时间可能有差异容易造成索引混乱。选定一个访问速度尚可的源长期用下去比追求“最快”稳定得多。4.6 换源后的验证与典型报错换完源马上执行sudo apt update正常情况下输出末尾会显示有多少个软件包可以升级而且过程耗时明显缩短。常见报错有几种404 Not Found路径里的版本代号写错了或者源URL缺失了对应仓库。没有Release文件URL整体写错连接的不是有效的Ubuntu源。签名验证失败某些第三方源缺少GPG密钥。Ubuntu官方镜像一般不会有这个问题遇到时检查一下源地址是否写完整。看到这些报错不要慌先回到4.2的备份恢复大法再核对源文件内容九成问题都能解决。5. 开启SSH从只能本机登录到支持远程管理5.1 安装OpenSSH ServerUbuntu Server版安装过程中不会默认安装SSH服务所以新系统是没法直接通过远程工具连接的。先把服务装好sudo apt update sudo apt install -y openssh-server安装完成后Ubuntu这里有个容易踩的小坑服务名是ssh不是sshd。很多教程写systemctl enable --now sshd在Ubuntu上会报错。正确命令sudo systemctl enable --now ssh sudo systemctl status ssh看到active (running)说明服务已经启动并且开机自启也已经打开。5.2 本机自测三步走在打开远程工具连接之前我建议先在本机终端里做一个最小化自测ssh 127.0.0.1如果本机都连不上远程工具大概率也连不上。自测时第一次连接会提示确认主机指纹输入yes后继续然后输入密码登录能进就说明基本流程没问题。测完执行exit退出。这个操作能帮你快速区分问题范围本机自测成功但远程连不上问题多半在网络或防火墙本机自测就失败问题在SSH服务本身。5.3 防火墙放行与端口调整如果没有禁用防火墙就需要放行SSH端口。Ubuntu自带的是ufw操作如下sudo ufw allow OpenSSH sudo ufw enableOpenSSH是预置的服务名实际会放行22/tcp端口。如果你把SSH改成了别的端口比如2222就要写sudo ufw allow 2222/tcp我见过有同学改了端口但忘记放行防火墙结果把自己锁在外面最后只能通过管理后台的VNC或物理终端进去解开。改端口之前一定确认防火墙同步放行。5.4 登录安全的关键配置SSH装好能连通只是第一步安全配置才是重点。文件/etc/ssh/sshd_config里有几个参数直接影响安全度PermitRootLogin默认prohibit-password禁止root密码登录但允许密钥。不要轻易改成yes。PasswordAuthentication是否允许密码认证。如果已经配置好密钥可以关掉密码认证。PubkeyAuthentication保持yes启用公钥认证。修改后必须先检查语法再重启服务sudo sshd -t sudo systemctl reload sshsshd -t用来验证配置文件语法有错误会直接输出。先检查再reload可以避免因为一个拼写错误导致SSH服务起不来的尴尬。5.5 远程连不上的排查链路如果配置完还是连不上我通常按下面的顺序排查本机执行systemctl status ssh确认服务没有退出执行ss -tlnp | grep ssh确认22端口在监听检查ufw status确认放行规则存在检查sshd_config的PermitRootLogin和AllowUsers设置是否限制了登录用户最后再看客户端连接时的具体报错。有一次我配置好后始终连不上最后发现就是ufw没有放行OpenSSH规则。这类问题如果上来就怀疑配置文件反而会绕远路。6. 主机名与时区两个最容易被忽略的初始化项6.1 hostname到底改哪里新装的Ubuntu默认主机名是一长串随机字母和数字终端提示符看起来特别乱。修改方法很简单sudo hostnamectl set-hostname my-server这里的my-server换成你自己的主机名。执行完重新开一个终端提示符就会显示新名字。hostnamectl会自动同步更新/etc/hostname文件但有一个地方它不一定处理干净/etc/hosts。系统在某些场景下会把/root主机名映射到127.0.1.1如果hosts里还保留着旧主机名而/etc/hostname已经变成了新名字就会出现解析不一致。典型症状是sudo命令偶尔卡住几秒钟因为系统尝试反向解析主机名但匹配不上。所以改完主机名后我总要顺手看一眼sudo grep 127.0.1.1 /etc/hosts如果在旧名称就手动改成新名称然后重启网络服务或者直接重启终端。6.2 时区修改的两种方式与验证系统时区默认是UTC对中国用户来说时间显示会偏差八个小时。修改时区最现代的方式sudo timedatectl set-timezone Asia/Shanghai要用哪个时区可以先列出来确认timedatectl list-timezones | grep Asia改完查看timedatectl当前时区应该已经变成Asia/Shanghai本地时间也恢复正常。老一点的做法是直接替换/etc/localtime的符号链接sudo ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime两种方式最终效果一样timedatectl更直观推荐优先使用。Ubuntu Server默认启用systemd-timesyncd做网络时间同步时区配好之后时间基本不会再漂。如果发现时间总是不对优先检查NTP同步服务是否正常而不是重复去改时区。6.3 修改后的组合验证主机名和时区改动后我会统一跑一遍hostnamectl timedatectl date第一个确认主机名第二个确认时区和同步状态第三个确认最终显示时间。都对了这部分就算彻底完成。7. 配置完成后我如何快速验收一台新机器7.1 一条命令检查所有配置初始化做完我习惯用一组命令集中验证而不是挨个去试sudo -i whoami sudo apt update systemctl status ssh --no-pager hostnamectl timedatectl ss -tlnp | grep ssh这些命令覆盖了本文涉及的所有配置点root权限、软件源可用性、SSH服务状态和端口监听、主机名、时区。想全跑到也可以拼成一条sudo apt update systemctl status ssh --no-pager hostnamectl timedatectl7.2 输出应该长什么样我的经验是验证时不用逐字读全量输出抓住几个关键标志就行apt update的末尾出现“可以升级”的统计数字且下载过程没有卡死SSH服务的状态是active (running)ss的输出里能看到sshd在监听当前端口hostnamectl的Static hostname显示你刚设置的名称timedatectl里显示的Time zone是Asia/Shanghai并且System clock synchronized标记正常。只要这几点都满足这台机器的基础配置就算是合格了。剩下的就是你愿意把它交给谁、跑什么业务的问题。最后聊几句我的习惯。批量初始化一批机器的时候我一般先以普通用户登录设好root密码然后趁着还没装任何软件先把源换掉再执行apt update之后才装ssh等软件。这样最省时间因为后面所有软件下载都已经走的是新源。多台机器交付时我会把每台的sources.list.bak保留在本机不删后续排查问题有凭有据。还有一个小技巧主机名我习惯在初始化阶段就写进自动化脚本而不是等机器上线后再一台台改少踩很多由hosts不一致引来的莫名其妙的问题。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询