n8n SSH 節點實戰指南:從遠端指令到自動化部署的 DevOps 應用

n8n ssh

在系統管理 (SysAdmin) 與開發維運 (DevOps) 的世界裡,SSH (Secure Shell) 是我們與遠端伺服器溝通的命脈。我們每天透過它登入主機、檢查服務狀態、部署最新程式碼、執行維護腳本。但你是否想過,如果這些日常的、重複的 SSH 操作,也能被納入 n8n 的視覺化自動化工作流中呢?

  • 當網站監控系統發現異常時,n8n 自動透過 SSH 登入主機,執行 systemctl restart nginx 來嘗試重啟服務。
  • 每天凌晨三點,n8n 自動 SSH 到你的資料庫主機,執行 pg_dump 指令來進行資料庫備份,並將備份檔上傳到 S3。
  • 當開發者將最新的程式碼推送到 Git 主分支時,一個 Webhook 觸發 n8n,n8n 再透過 SSH 登入生產伺服器,自動執行 git pulldocker-compose up -d --build 來完成 CI/CD 部署。

這,就是 n8n SSH 節點所帶來的強大能力。它讓 n8n 不再只是一個串接雲端 SaaS 服務的工具,更是一個能夠直接管理你底層基礎設施的「自動化 Ops Center (維運中心)」。

這篇文章將是你的 n8n SSH 節點終極實戰指南。我們將從最重要的「安全金鑰設定」開始,手把手教你如何建立安全的連線,並透過兩個超實用的監控與部署範例,讓你學會如何將繁瑣的伺服器指令,轉化為可靠、可重複執行的自動化腳本。

為什麼要用 n8n 執行 SSH?打造你的視覺化 Ops Center

將 SSH 指令整合到 n8n 工作流中,能為你的維運工作帶來三大革命性優勢:

  1. 集中化與視覺化腳本管理: 告別散落在各個伺服器、各個工程師電腦中的零散 Shell Script 吧!你可以將所有常用的維運腳本,都建構成一個個清晰的 n8n 工作流。流程一目了然,方便交接與管理。
  2. 事件驅動的伺服器操作: 傳統的 SSH 操作是手動的、計畫性的。但透過 n8n,你可以讓伺服器指令由「事件」來驅動。例如,UptimeRobot 的 Webhook 成為觸發器,Prometheus Alertmanager 的警報成為觸發器,讓你的伺服器能夠對外部事件做出即時的、自動化的反應。
  3. 跨系統整合的強大能力: 這是 n8n 最強大的地方。SSH 指令的執行結果,不再只是一段終端機上的文字。在 n8n 中,你可以輕易地將 df -h 指令回傳的磁碟空間使用率,與 IF 節點結合進行判斷,再透過 SlackMicrosoft Teams 節點發出警報。你可以將 git pull 的成功訊息,記錄到 Google Sheets 的部署日誌中。

安全連線是第一要務:設定 SSH 金鑰憑證的完整教學

在讓 n8n 掌握你伺服器的鑰匙之前,我們必須確保這把鑰匙是絕對安全的。雖然 SSH 節點支援帳號密碼登入,但這是一種極不安全的做法。在任何正式環境中,你都應該使用「SSH 金鑰 (SSH Keys)」。

為什麼絕不應該使用密碼?

  • 安全性低: 密碼容易被暴力破解(Brute-force attack)。
  • 管理困難: 密碼需要記憶和定期更換,且寫在 n8n 憑證中等於是明文儲存。
  • 無法用於自動化: 許多伺服器為了安全,會禁用密碼登入。

設定 SSH 金鑰憑證 (Step-by-Step)

  1. 在本機產生 SSH 金鑰對:
    • 打開你的電腦終端機 (不是 n8n 伺服器),執行以下指令:Bashssh-keygen -t rsa -b 4096 -C "n8n-automation-key"
    • 系統會要求你輸入儲存位置(直接按 Enter 使用預設值即可)和密碼(建議留空,方便 n8n 自動使用)。
    • 完成後,你會在你的使用者目錄下的 .ssh 資料夾中,看到兩個新檔案:
      • id_rsa私鑰 (Private Key),這是你的秘密鑰匙,絕對不能外洩。
      • id_rsa.pub公鑰 (Public Key),這是你要安裝到遠端伺服器上的鎖。
  2. 將「公鑰」安裝到你的遠端伺服器:
    • 你需要將 id_rsa.pub 檔案的內容,附加到你希望 n8n 登入的那個使用者帳號底下的 ~/.ssh/authorized_keys 檔案中。
    • 一個簡單的指令是(在本機執行):Bashssh-copy-id user@your_server_ip useryour_server_ip 請換成你自己的伺服器資訊)
    • 最佳實踐: 你應該為 n8n 在遠端伺服器上,建立一個權限受限的專屬使用者(例如 n8n-runner),而不是直接使用 root 帳號。
  3. 在 n8n 中建立 SSH 憑證:
    • 在 n8n 中新增 SSH 節點,於 Credential 欄位點擊「Create New」。
    • Authentication Method: 選擇 Private Key
    • User: n8n-runner (你在遠端伺服器上設定的專屬使用者)。
    • Host: your_server_ip (你的遠端伺服器 IP 或網域)。
    • Port: 22 (或你的自訂 SSH 埠口)。
    • Private Key: 將你本機 id_rsa 私鑰檔案的完整內容(包含 -----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----),複製並貼到這個欄位中。
    • 儲存憑證。
n8n ssh

SSH 節點核心功能:執行遠端指令與處理回傳結果

設定好連線後,使用節點就非常簡單了。

  • Operation: Execute Command
  • Command: 你想要在遠端伺服器執行的 Shell 指令。這個欄位完全支援 Expressions,讓你可以動態地組合指令。
  • 輸出結果 (Output):
    • stdout: Standard Output,代表指令成功執行後,在終端機上印出的正常結果
    • stderr: Standard Error,代表指令執行過程中發生的錯誤訊息
    • exitCode: 結束代碼。一般來說,0 代表成功,非 0 代表有錯誤發生。

你可以利用 IF 節點,根據 exitCodestderr 是否為空,來判斷 SSH 指令是否執行成功,並進行後續的錯誤處理。

實戰演練一:建立「伺服器磁碟空間」自動監控警報

  • 目標: 每天凌晨檢查一次網站主機的磁碟空間,如果根目錄 (/) 的使用率超過 90%,就發送一則 Slack 緊急通知。
  • 流程設計: Schedule -> SSH -> IF -> Slack
  1. Schedule 節點: 設定每天凌晨執行。
  2. SSH 節點:
    • Credential: 選擇你設定好的伺服器憑證。
    • Command: df -h / (這是 Linux 中用來查詢磁碟空間的指令)。
  3. IF 節點:
    • 這裡需要一點點 Expressions 技巧來解析 df 指令的輸出。
    • Value 1 (Expression):{{ parseInt($json.stdout.split('\n')[1].split(/\s+/)[4].replace('%','')) }}
      • 解說: 這串語法的作用是,將 stdout 的輸出文字進行分割,精準地抓取出使用率的那個數字(例如 95%),並轉換成數字 95
    • Operation: Number: Greater Than
    • Value 2: 90
  4. Slack 節點:
    • 連接在 IF 節點的 true 路徑上。
    • Text: 🚨 警報:網站主機磁碟空間即將耗盡!目前使用率:{{ parseInt($json.stdout.split('\n')[1].split(/\s+/)[4].replace('%','')) }}%

實戰演練二:實現簡易的「Git Webhook 自動化部署」

  • 目標: 當 GitHub 儲存庫的 main 分支有新的 push 時,自動登入到生產主機,執行 git pull 並重啟對應的 Docker 服務。
  • 流程設計: Webhook -> IF (驗證) -> SSH
  1. Webhook 節點:
    • 接收來自 GitHub Webhook 的請求。在 GitHub 中設定,當有 push 事件時,觸發這個 Webhook URL。
    • 在 Webhook 設定中加入一個 Secret,用於驗證請求的合法性。
  2. IF 節點: 驗證 GitHub 送來的簽章,確保請求不是偽造的。
  3. SSH 節點:
    • Credential: 選擇你的生產主機憑證。
    • Command:Bashcd /path/to/your/project && git pull && docker-compose up -d --build
      • 解說: 我們用 && 來串連多個指令,確保前一個成功後才會執行下一個。cd 進入專案目錄,git pull 拉取最新程式碼,docker-compose up... 則是用最新的程式碼,重新建置並啟動服務。
n8n ssh

結語

n8n 的 SSH 節點,是你自動化版圖中的最後一塊、也是最硬核的一塊拼圖。它將 n8n 的能力,從雲端 SaaS 的世界,延伸到了你基礎設施的最底層。

透過它,你可以將重複的系統維護工作、繁瑣的部署流程、以及應急的監控反應,全部轉化為視覺化、可管理、且能與你整個數位生態系聯動的自動化工作流。

請務必將「安全」作為使用此節點的最高指導原則,永遠優先使用權限受限的專屬帳號與 SSH 金鑰。當你掌握了這個強大的工具後,你會發現,沒有什麼伺服器上的任務,是 n8n 無法為你代勞的。

更多精選文章請參考

n8n 與 Zapier 比較:該選哪個?2025年最完整功能、費用、優缺點分析

開源自動化工具推薦:從工作流程到測試,找到最適合你的免費方案

n8n 發送 Email 超詳細教學:從 SMTP 設定到 Gmail 節點串接,一篇搞定!

n8n Notion 串接終極指南:2025 年打造自動化工作流程,效率翻倍!

【n8n 教學】最強 n8n 網頁爬蟲指南,免寫程式也能輕鬆抓取網站資料!

【n8n 教學全攻略】2025最新!從入門到串接實戰,打造你的自動化工作流

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端