說到 SSH 多組金鑰與帳號管理的需求,我會從 GitHub Desktop 說起。
GitHub Desktop 是個很好用的 git GUI 工具,缺點是它設計上只會記一個 GitHub 帳號。
若你有好幾個 GitHub 帳號,照 GitHub Desktop 設計的操作邏輯,你要重複登出登入切換帳號。
但我們其實可以利用 SSH 金鑰管理機制,直接存取不同帳號的源碼庫。
此外,如果你有申請多家雲端服務商,而他們支援 SSH 連線的話,也是用同一套機制管理多個帳號。
本文分兩章。第一章說明 SSH 金鑰基本操作。第二章說明管理多組金鑰的方式。
- 建立一組金鑰
- 管理多組金鑰

各版本 Linux 散佈套件中,基本都有三款只提供「桌面共用」功能的 VNC 工具。
它們不提供「遠端登入」功能。
我安裝的舊電腦是一台工業用電腦,將近 15 年前的硬體規格。
我最初拿 x86_64 的 Linux USB 作業碟開機,看到 CPU 不支持 x86_64 的訊息時,讓我驚訝不已。
其配置規格為:
- VIA C7 CPU。x86 32 位元 CPU,不支持 x86_64。
- 主機板晶片組內建 S3 UniChrome 顯示晶片。
- 1 GB RAM。
- 2 GB CF 記憶卡。早期工業用電腦常用 CF 記憶卡作為 IDE 磁碟裝置。
就算是 Debian 也很難在這種配置下裝視窗環境。所以我選擇了更精簡的 Alpine Linux。
本文整套安裝結束,清除 /var/cache/apk ,最後用了 root 分割區大約 750~800 MB。
有個客戶最近向財政部申請電子發票服務,問我能不能幫他們的 POS 系統加上列印電子發票的功能。
技術上不難,但與公家機關打交道的事,規格才是最重要的。
總之看看「財政部電子發票證明聯一維及二維條碼規格說明」。
但我萬萬沒想到這種公開規格的事,竟然可以搞成尋寶大冒險遊戲。
絕大多數使用者在安裝 Debian/Ubuntu 之後,會修改 apt 的 sources.list ,完全使用網路上的套件庫,取消 CD 來源。但本文的操作相反,僅使用 Debian/Ubuntu 的 CD/DVD 內容作為套件庫來源。本文適用情境:
- 舊版本系統,官方已經移除網路上的套件庫。
- 主機網路不連外。
以上情境需要管理者事先從網路下載完整的光碟影像,並將光碟中的套件資訊匯入 apt 資料庫。日後需要安裝套件時,apt 就會提示管理者需要插入第幾片光碟。一般還需要手動修改 sources.list 加一些選項, apt 才不會丟出套件來源不能認證(can’t be authenticated)的錯誤。
本站參加 Google AdSense 計畫。日前收到通知「自 2024 年 1 月 16 日起,AdSense 發布商除了遵守《歐盟地區使用者同意授權政策》規定以外,還必須採用 Google 認證且已整合 IAB 資訊公開和同意聲明架構 (TCF) 的 CMP」。為了符合 Google AdSense 規定的隱私權透明揭示原則,增加
「隱私權政策」聲明頁。頁面連結固定可見本站最下方頁腳處。
抱怨一點,Google 怎麼不直接提供隱私權政策的定型化範本。一般人哪知道該寫什麼內容。
安裝 Ubuntu 22.04 後,按照 Jekyll on Ubuntu 的說明,安裝 Jekyll 所需套件與環境。
sudo apt-get install ruby-full build-essential zlib1g-dev
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
gem install jekyll bundler
安裝完成後,先建立一個測試 Jekyll 用的目錄。例如 jekyll-test 。
mkdir jekyll-test
cd jekyll-test
jekyll new --skip-bundle
這會建立一個全新網站的 Jekyll 專案目錄,但還要修改它的 Gemfile ,改用 github-pages 套件管理內容。
NetworkManager 是目前各種 Linux 散佈套件最常用的網路連線管理工具。預設配置就會安裝這套工具。它提供了多種 GUI 管理工具,一套命令列工具,也允許使用組態檔設定。本文說明如何以命令列工具或組態檔做基本的網路連線設定工作。
- GUI 工具: 有很多種。但通常 GNOME 的 nm-applet (套件名 network-manager-gnome) 就足夠了。它在 KDE 或 LXDE/LXQt 桌面環境也能用。
- 命令列工具: nm-cli。
- 組態檔: nm-settings-keyfile。
因為 Twitter (改名 X) 撤除了活動 Timeline 功能,故本部落將首頁側欄內容改成 Profile Timeline 。
We retired the Likes, Collections, and Moments timelines on January 13, 2023.
You can learn more about this change in our announcement
其實資本論根本沒寫完w
我記得熊彼得吐槽馬克思出版資本論第一卷後,讀了邊際理論,然後資本論剩下的內容就寫不下去了。
ps.馬克思學的是李嘉圖的古典理論
No.29651168
這我倒是第一次聽說,所以馬列信徒的聖經根本是個沒寫完的破書嗎www
「關於我寫到一半寫不下去的理論半成品被野心革命家當作革命聖經放送這件事」
本文內容以 .NET 6 或更新版本為目標平台。我不用 .NET Framework ,不保證適用。
在 .NET 平台上,有兩種主要的計時器類別(Timer),分別是:
在一些 .NET Framework 文件中,還會提到其他種類的計時器類別,例如 System.Windows.Forms.Timer 。但看名字就知道,那些計時器類別綁定在 UI 庫或 Windows 系統上。而本文提到的這兩種計時器則具有普遍性,不會妨礙 .NET 程式的跨平台運行能力。
本文內容以 .NET 6 或更新版本為目標平台。我不用 .NET Framework ,不保證適用。
我們有很多種方法可以結束一個執行中的程式。例如一個在指令列執行的程式,可以按下 Ctrl + C 打斷它。又或者是「工作管理員」這類的工具,也會提供「結束工作」按鈕讓使用者終止指定的程式。 Linux 用戶熟悉的 kill 指令也是一個用外部工具終止程式的方法。
在 Unix/Linux/BSD/macOS 系統,上述操作都統一在 signal 訊號機制。例如 Ctrl + C 實際上觸發 SIGINT 訊號; kill 默認發出 SIGTERM 訊號;強制終止程式觸發 SIGKILL 訊號。具體列表請見 GNU libc manual - Termination Signals。在 Windows 系統上其實也有類似的方法,不過本文重點是 .NET 平台。
本文內容以 .NET 6 或更新版本為目標平台。我不用 .NET Framework ,不保證適用。
Named pipe (具名管道) 在 .NET 上不是新玩意,早在 .NET Framework 3.5 時就已提供 NamedPipeServerStream / NamedPipeClientStream。
但是自 .NET 6 起,它的底層實作技術改變了。
如果你想讓其他程式語言開發的程式 (非 .NET 平台) 和 NamedPipeServerStream / NamedPipeClientStream 程式溝通,必須知道這件事。
我有一個用 .NET Core 3 寫的具名管道服務程式,前陣子想用 .NET 6 發佈到 Linux 跑。結果原先用 FIFO 寫的客戶端程式接不上。一番研究後,才知道 .NET 6 改了具名管道的底層實作技術。
在 Linux 桌面環境,想要開機後自動啟動某程式,簡易作法就是在 autostart 設定中加入要啟動的程式。
但這個作法用在 VirtualBox 的虛擬機上,就不太靈光。
偶爾可以啟動,但有時會跳出 vboxdrv 尚未載入的錯誤狀況。
然而手動啟動虛擬機總是正常的。
因為現代的 Linux 散佈版本於啟動桌面環境時,會將進入桌面和載入驅動程式 (包含 vboxdrv) 等多個工作,交給 systemd 平行處理 (systemd 約 2013 年之後普及)。
既然是平行處理,那麼進入桌面和載入 vboxdrv 這兩件工作,誰先誰後就不是固定順序的了。
所以想透過桌面環境的 autostart 自動啟動虛擬機的話,有時就會碰到先進入桌面但 vboxdrv 還沒載入的情形。
然後就跳出上述的錯誤了。
為什麼現在 Linux 的網路介面名稱不是 eth0 ? 這說來話長,我先長話短說。
若要用 eth0 ,編輯 /etc/default/grub ,GRUB_CMDLINE_LINUX 這行改成:
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
然後執行下列指令更新 grub 設定:
$ sudo update-grub
或者
$ sudo grub-mkconfig -o /boot/grub/grub.cfg
想要了解來龍去脈,請接著看。
標題說的業務用磁碟是指多顆具有相同分割區配置,安裝 Linux 作業系統和客戶業務軟體,用在大量裝機場合的磁碟。
此外,本文情境還將面臨分批採購、後續替換等狀況,故使用的磁碟會是不同型號、不同品牌、甚至標示容量也不相同。
CloneZilla 的磁碟對拷功能雖然可以直接複製分割區配置,但一般情形僅限兩顆磁碟實際容量一致或目的磁碟容量較大的情形。
為了能複製到不同容量的磁碟,本文情境的分割區配置並不會用滿整顆磁碟的容量。
實務上可能只配置 30GB 左右,以便複製到 32GB 或更大容量的磁碟。
這種分割區配置方式適合使用於 eMMC, CF卡, USB隨身碟, SSD 這一類的儲存媒體。
這種做法,我以前也用在 Raspberry Pi 上。可以參考我這篇 產生指定容量的 Raspberry Pi SD 卡磁碟映像。
2022-10-05: 大幅改寫,改以磁碟為複製單位,而不是分割區。