National Chengchi University
Uedu Main Site
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try a Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

1

Local AI

--

Uedu Code

--

政治大學 AQI 58 25°C PM2.5 12
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 05

安裝後續設定

更新套件清單、系統升級、安裝 OpenSSH Server
Interaction導覽 15 minute(s)

Learning Objectives

  • 說明套件倉庫是什麼,找到 Ubuntu 24.04 的倉庫設定檔
  • 分辨 apt update(更新套件清單)與 apt upgrade(升級套件),依正確順序完成系統升級
  • 安裝 OpenSSH Server,用 systemctl status ssh 與 ss -tln 確認服務正在執行
  • 從自己的電腦用 ssh 連進虛擬機,並把時區設定為 Asia/Taipei

裝好系統之後的第一件事

剛裝好的系統,裡面的套件是製作安裝映像檔時的版本,之後官方已經推出了很多安全性修正。 所以安裝完成後的第一件事是更新:先取得最新的套件清單,再把已安裝的套件升級。

接著通常會做兩件事:

  • 安裝 OpenSSH Server,之後就能從自己的電腦用終端機遠端登入,不必一直開著虛擬機的視窗
  • 確認時區正確,系統紀錄與排程的時間才不會差好幾個小時

這一課依序完成這三件事。

套件倉庫與兩個更新指令

倉庫(repository)是存放軟體套件的伺服器,每個發行版本都有自己的倉庫。 你用 apt install 安裝軟體時,apt 會到倉庫下載套件。Ubuntu 24.04 的倉庫設定寫在:

/etc/apt/sources.list.d/ubuntu.sources

這是新的 deb822 格式,每一段寫明倉庫網址(URIs)、版本代號(Suites,例如 noble、noble-updates、noble-security)與元件(Components)。 舊的 /etc/apt/sources.list 只剩一行註解;投影片用 nano /etc/apt/sources.list 編輯倉庫清單,是 22.04 以前的做法。 需要改用台灣的鏡像站時,改的是 ubuntu.sources 裡的 URIs,修改系統檔案要加 sudo。

指令 做什麼 會不會改變已安裝的軟體
sudo apt update 到倉庫下載最新的套件清單,知道每個套件目前有哪些新版本 不會
sudo apt upgrade 依照套件清單,把已安裝的套件升級到新版本 會

順序一定是先 update、再 upgrade:沒有先更新清單,apt 不知道有新版本,upgrade 就什麼都不會升級。 這兩個指令會修改系統,必須加 sudo;沒加的話會看到 are you root? 的錯誤。 apt upgrade 在真的終端機裡會先列出要升級的套件,詢問 Do you want to continue? [Y/n];加上 -y 代表直接回答 yes。 升級到新的核心之後,要重新開機(sudo reboot)才會使用新核心。

互動練習:更新套件清單與升級系統

先找到倉庫的設定檔,再完成系統升級。這裡有兩顆會「做錯」的按鈕:一顆沒有加 sudo,一顆在更新清單之前就升級,照順序按下去,看看輸出有什麼不同。

讀懂更新的輸出

$ apt update
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

are you root? 是在提醒你:這個操作要管理權限,前面加 sudo。

sudo apt update 的每一行代表一個倉庫:Hit 是清單沒有變、Get 是下載了新的清單。最後一行 12 packages can be upgraded 告訴你有幾個套件可以升級(數字依當時的狀況而定);升級完再執行一次,會變成 All packages are up to date.。

虛擬機的輔助工具

投影片在升級之後還安裝了幾個套件,讓虛擬機和主機配合得更好(畫面解析度自動調整、複製貼上共用等):

虛擬化軟體 做法
VMware sudo apt install open-vm-tools(桌面版再加 open-vm-tools-desktop)
VirtualBox 安裝 Guest Additions:先 sudo apt install build-essential dkms linux-headers-$(uname -r),再從 VirtualBox 選單插入 Guest Additions 光碟並執行安裝程式

linux-headers-$(uname -r) 裡的 $(uname -r) 會被換成目前的核心版本(例如 6.8.0-45-generic),所以裝到的是和核心相符的標頭檔。

SSH:加密的遠端登入

登入 Linux 有兩種方式:

方式 本機 遠端
圖形模式 在桌面登入畫面登入 遠端桌面
文字模式 在主控台(console)登入 用 SSH 從另一台電腦的終端機登入

SSH(Secure Shell)是加密的網路通訊協定,取代了早期不加密的 telnet、rlogin、rsh、rcp:密碼和你打的每個指令都經過加密,不會被網路上的人偷看。 SSH 分成兩端:

  • 伺服器端:要被連進去的那台(你的虛擬機),需要安裝 openssh-server,它會在 22 號連接埠等待連線
  • 用戶端:你自己的電腦。macOS、Linux 與 Windows 10/11 的終端機都內建 ssh 指令;也可以用 PuTTY、MobaXterm 等圖形化工具

Ubuntu Desktop 預設沒有安裝 SSH 伺服器;Ubuntu Server 的安裝程式有一個「Install OpenSSH server」的選項可以勾選。

指令 用途
sudo apt install openssh-server 安裝 SSH 伺服器,裝好會自動啟動並設定為開機啟動
systemctl status ssh 查看 ssh 服務的狀態:Active: active (running) 代表正在執行;按 q 離開
ss -tln 列出正在等待連線的 TCP 連接埠(-t TCP、-l 監聽中、-n 用數字顯示);看到 :22 就對了
hostname -I 查出這台機器的 IP 位址,用戶端連線時要用

Ubuntu 24.04 的 SSH 改由 ssh.socket 負責監聽 22 號連接埠,有人連線時才啟動 ssh.service。 所以在真的系統上,剛裝好時 systemctl status ssh 有可能顯示 inactive,但 ss -tln 已經看得到 :22,這是正常的。 投影片用 lsof -nPi 檢查連接埠,Ubuntu 上更常用 ss。

互動練習:安裝 SSH 伺服器並設定時區

這台虛擬機的時區還是預設的 UTC。先確認 SSH 伺服器還沒安裝,裝好之後檢查服務與連接埠,查出 IP 位址;再把時區改成台北。其中一顆設定時區的按鈕沒有加 sudo,會被拒絕。

時區設定

指令 用途
timedatectl 顯示目前的時間、時區、是否已經和網路校時
timedatectl list-timezones 列出所有時區名稱;清單很長,可以搭配 grep 篩選(見表格下方)
sudo timedatectl set-timezone Asia/Taipei 把時區改為台北(UTC+8),需要管理權限
date 顯示目前的日期時間;台北時區顯示為 CST
timedatectl list-timezones | grep -i taipei

|(管線)把前一個指令的輸出交給 grep,grep -i 只留下含有 taipei 的那幾行,不分大小寫;管線在第 11 課介紹。

時區的名稱用「洲/城市」的格式(例如 Asia/Taipei、America/New_York),而不是固定的「+8 小時」, 因為有些地區有日光節約時間,換算方式一年會變兩次。系統內部一律記錄 UTC 時間,時區只影響顯示。 雲端主機與伺服器常維持 UTC,方便不同地區的人比對紀錄;自己用的練習機改成台北時間比較直觀。

導覽:從自己的電腦用 SSH 連進虛擬機

虛擬機裝好 openssh-server 之後,從自己的電腦(macOS、Linux 或 Windows 的 PowerShell)連進去。以 VirtualBox 預設的 NAT 網路為例;虛擬機改用「橋接介面卡」時的做法見第 2 步的說明。

  1. 1

    在虛擬機裡查出 IP 位址

    在虛擬機的終端機執行 hostname -I。VirtualBox 的 NAT 網路下通常是 10.0.2.15,這個位址只在 VirtualBox 內部有效,你的電腦不能直接連到它,所以需要下一步的連接埠轉送。

  2. 2

    設定連接埠轉送

    虛擬機開著也可以設定。在 VirtualBox 選這台虛擬機 →「設定」→「網路」→「介面卡 1(NAT)」→ 展開「進階」→「連接埠轉送」,新增一條規則:

    名稱 協定 主機 IP 主機連接埠 客體連接埠
    ssh TCP 127.0.0.1 2222 22

    意思是:連到自己電腦的 2222 號連接埠,就會被轉送到虛擬機的 22 號連接埠。

    如果把網路改成「橋接介面卡」,虛擬機會從你家或學校的網路拿到一個和你電腦同一網段的 IP(例如 192.168.1.23),就不需要轉送,直接 ssh [email protected]。部分校園或公共網路不允許橋接,這時用 NAT 加轉送最穩定。

  3. 3

    第一次連線:確認主機金鑰

    在自己電腦的終端機執行 ssh -p 2222 [email protected](-p 指定連接埠,student 是虛擬機裡的帳號)。第一次連到一台主機時,ssh 會顯示對方的金鑰指紋並詢問是否信任,輸入 yes;指紋會記在自己電腦的 ~/.ssh/known_hosts,之後就不會再問。輸入密碼時畫面不會顯示任何字元。

  4. 4

    確認自己在虛擬機裡

    登入後提示字元會變成虛擬機的 student@ubuntu:~$。執行 hostname 與 whoami 確認:你在自己電腦的終端機裡,操作的是虛擬機。

  5. 5

    登出

    輸入 exit 或按 Ctrl+D 登出,回到自己電腦的終端機。要讓虛擬機關機,在虛擬機裡執行 sudo shutdown -h now(或 sudo poweroff);重新開機用 sudo reboot(或 sudo shutdown -r now)。

這段導覽完成了

想一想:更新與升級

1.

sudo apt update 做的是什麼事?

2.

剛裝好系統就執行 sudo apt upgrade,結果顯示 0 upgraded,最可能的原因是?

3.

Ubuntu 24.04 的套件倉庫網址記錄在哪個檔案?

第 1 次作答

想一想:SSH 與時區

1.

ss -tln 的輸出有一列 0.0.0.0:22,代表什麼?

2.

虛擬機用 VirtualBox 的 NAT 網路,IP 是 10.0.2.15。要從自己的電腦用 SSH 連進去,該怎麼做?

3.

要把時區改為台北,下列哪個指令正確?

第 1 次作答

重點精華回顧

  • 倉庫是存放套件的伺服器;Ubuntu 24.04 的設定在 /etc/apt/sources.list.d/ubuntu.sources。
  • 先 sudo apt update(更新清單)、再 sudo apt upgrade(升級套件);沒加 sudo 會出現 are you root?;換了新核心要重新開機。
  • 虛擬機的輔助工具:VMware 裝 open-vm-tools,VirtualBox 裝 Guest Additions(需要 linux-headers-$(uname -r))。
  • SSH 是加密的遠端登入協定;伺服器端裝 openssh-server,在 22 號連接埠等待連線。
  • systemctl status ssh 看服務狀態,ss -tln 看監聽中的連接埠,hostname -I 查 IP。
  • VirtualBox NAT 網路要設定連接埠轉送,再 ssh -p 2222 [email protected];用 exit 或 Ctrl+D 登出。
  • 時區:timedatectl 查看,sudo timedatectl set-timezone Asia/Taipei 設定;關機 sudo shutdown -h now、重新開機 sudo reboot。
這一課完成了!
Next lesson:初次使用系統
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。