Skip to Content
進階功能連到 Linux 板子

連到 Linux 板子(UART 或 SSH)

這一頁帶你從零開始,用 TERM 面板登入一塊跑 Linux 的板子。面板本身的按鍵、回捲、複製貼上等細節見 終端機(TERM),這裡只講「怎麼連上」。 範例一律用合成資料:主機 demo-board、使用者 demo、位址 192.0.2.10。

兩種接法擇一:板子有 debug 序列埠就走 UART;板子上了網路就走 SSH。

方法一:UART

  1. 把板子的 debug UART 接到電腦,在裝置管理員確認 COM 埠編號(以下用 COM7)。

  2. F9 把一個面板選成 term(或指令 layout @p<N> term)。

  3. 連線列選 UART、選 COM7,按 [Connect];或用指令:

    term open uart COM7 115200
  4. 按 Enter 叫出登入提示,輸入帳號密碼。

如果同一個埠還開在 UART 記錄面板,要先關掉:TERM 連線時獨佔該埠。 UART 送出面板的換行下拉要接 Linux shell 時請選 CR(CRLF 會多送一個字元,shell 看到的是多出來的空提示);TERM 面板自己送 Enter,不受這個設定影響。

告訴板子終端有多大

序列線沒有視窗大小這個通道,板子的 shell 不知道面板有幾欄幾列。連線中面板標題會顯示大小,例如 TERM 126×22。登入後在板子上執行:

stty rows 22 cols 126

(換成你標題上的 列 與 欄;面板縮放後再執行一次。)

或者在板子的 ~/.bashrc 定義下面這個函式,需要時直接呼叫 resize_term,它會自己向 TERM 面板詢問游標位置來量出大小:

resize_term() { printf '\0337\033[r\033[999;999H\033[6n\0338'; IFS='[;R' read -rsd R _ r c; stty rows "$r" cols "$c"; }

這件事和 PuTTY 一樣要自己做;SSH 則會自動同步,不需要。

方法二:SSH

1. 確認 Windows 有 OpenSSH 客戶端

TERM 的 SSH 來源使用 Windows 內建的 ssh.exe。在 PowerShell 執行:

ssh -V

印出版本(例如 OpenSSH_for_Windows_9.x)就代表已安裝。找不到指令的話,到「設定 > 系統 > 選用功能 > 新增功能」安裝「OpenSSH 用戶端」,或用系統管理員身分開 PowerShell 執行:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

2. 準備 OpenSSH 格式的金鑰

ssh.exe 讀不了 PuTTY 的 .ppk。已有 .ppk 的話,用 puttygen 轉一次:

  1. 開啟 puttygen,File > Load private key 載入 .ppk(有密語就輸入)。
  2. 選單 Conversions > Export OpenSSH key,存成 C:\Users\<你>\.ssh\id_ed25519。

還沒有金鑰的話,PowerShell 執行 ssh-keygen -t ed25519 產生,再把公鑰(id_ed25519.pub)加進板子的 ~/.ssh/authorized_keys。

3. 修正金鑰檔權限

私密金鑰檔如果其他帳號也讀得到,ssh 會拒絕使用並印出:

WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions for 'C:\Users\demo\.ssh\id_ed25519' are too open. Bad permissions. Try removing permissions for user: ...

用 icacls 把檔案改成只有你自己能讀(PowerShell,路徑換成你的金鑰):

icacls "$env:USERPROFILE\.ssh\id_ed25519" /inheritance:r icacls "$env:USERPROFILE\.ssh\id_ed25519" /grant:r "$($env:USERNAME):(R)"

第一行移除繼承來的權限,第二行只留你自己唯讀。再重新連線即可。

4. 在 ~/.ssh/config 寫一個別名

建立(或編輯)C:\Users\<你>\.ssh\config:

Host demo-board HostName 192.0.2.10 User demo IdentityFile ~/.ssh/id_ed25519

Host 後面的名字會出現在 TERM 連線列的主機清單裡。規則(萬用樣式略過、最多列幾個等)見 終端機(TERM) 的 SSH 來源一節。

5. 連線

選好主機按 [Connect],或用指令:

term open ssh demo-board term open ssh demo@192.0.2.10

第一次連線,ssh 會在面板裡問:

The authenticity of host '192.0.2.10 (192.0.2.10)' can't be established. ED25519 key fingerprint is SHA256:... Are you sure you want to continue connecting (yes/no/[fingerprint])?

這是在確認你連的真的是那台板子。核對指紋沒問題後在面板輸入 yes 按 Enter,指紋會記進 known_hosts,之後不再問。如果之後突然出現 REMOTE HOST IDENTIFICATION HAS CHANGED,代表板子重刷過或有人冒充,請先查清楚再處理,不要直接略過。

沒有金鑰的話,ssh 會改問密碼,一樣直接在面板打字回答。

接下來

  • 回捲、選取、複製貼上、Session 記錄:終端機(TERM)
  • 想記錄板子的開機訊息:連上 UART 後 term log on