[{"data":1,"prerenderedAt":763},["ShallowReactive",2],{"navigation_docs":3,"-web-dev-security-ssh":352,"-web-dev-security-ssh-surround":758},[4,54,83,116,125,161,179,200],{"title":5,"path":6,"stem":7,"children":8},"Ai","/ai","ai",[9,12,42,46,50],{"title":10,"path":6,"stem":11},"AI 技術探索","ai/index",{"title":13,"path":14,"stem":15,"children":16,"page":41},"Rag","/ai/rag","ai/RAG",[17,21,25,29,33,37],{"title":18,"path":19,"stem":20},"BM25 演算法深入解析：從 TF-IDF 到現代搜尋引擎的核心技術","/ai/rag/bm25-deep-dive-from-tf-idf-to-rag","ai/RAG/bm25-deep-dive-from-tf-idf-to-rag",{"title":22,"path":23,"stem":24},"Dense Retrieval（向量檢索）深入解析","/ai/rag/dense-retrieval-deep-dive","ai/RAG/dense-retrieval-deep-dive",{"title":26,"path":27,"stem":28},"RAG（Retrieval-Augmented Generation）原理與實作入門","/ai/rag/rag-intro-principles-and-implementation","ai/RAG/rag-intro-principles-and-implementation",{"title":30,"path":31,"stem":32},"RAG Retrieval Strategy 深入解析","/ai/rag/rag-retrieval-strategy-deep-dive","ai/RAG/rag-retrieval-strategy-deep-dive",{"title":34,"path":35,"stem":36},"Reciprocal Rank Fusion（RRF）教學：打造更穩定的檢索融合策略","/ai/rag/rrf-reciprocal-rank-fusion-guide","ai/RAG/rrf-reciprocal-rank-fusion-guide",{"title":38,"path":39,"stem":40},"TF-IDF（Term Frequency–Inverse Document Frequency）深入解析","/ai/rag/tf-idf-deep-dive","ai/RAG/tf-idf-deep-dive",false,{"title":43,"path":44,"stem":45},"Docus AI 功能完整實作指南","/ai/docus-ai-implementation","ai/docus-ai-implementation",{"title":47,"path":48,"stem":49},"llms.txt 是什麼？在 Nuxt 中控制 AI 與搜尋引擎爬蟲的新方式","/ai/llms-txt","ai/llms-txt",{"title":51,"path":52,"stem":53},"MCP（Model Context Protocol）是什麼？用「AI 的 USB-C」理解模型如何安全連接工具與資料","/ai/mcp_concept","ai/mcp_concept",{"title":55,"path":56,"stem":57,"children":58,"page":41},"Data Analysis","/data-analysis","data-analysis",[59,63,67,71,75,79],{"title":60,"path":61,"stem":62},"Exploratory Data Analysis（EDA）資料探索分析入門","/data-analysis/exploratory-data-analysis-eda","data-analysis/exploratory-data-analysis-eda",{"title":64,"path":65,"stem":66},"PR-AUC 深入解析：不平衡分類問題的重要評估指標","/data-analysis/pr-auc-for-imbalanced-classification","data-analysis/pr-auc-for-imbalanced-classification",{"title":68,"path":69,"stem":70},"ROC-AUC 深入解析：理解分類模型的判斷能力","/data-analysis/roc-auc-complete-guide","data-analysis/roc-auc-complete-guide",{"title":72,"path":73,"stem":74},"SHAP（SHapley Additive exPlanations）模型解釋方法深入解析","/data-analysis/shap-model-interpretation-complete-guide","data-analysis/shap-model-interpretation-complete-guide",{"title":76,"path":77,"stem":78},"Social Network Analysis（SNA）深入解析","/data-analysis/social-network-analysis-sna","data-analysis/social-network-analysis-sna",{"title":80,"path":81,"stem":82},"Time-based Split：為什麼時間序列資料不能使用 Random Split？","/data-analysis/time-based-split-vs-random-split","data-analysis/time-based-split-vs-random-split",{"title":84,"path":85,"stem":86,"children":87,"page":41},"MachineLearning","/machine_learning","machine_learning",[88,92,96,100,104,108,112],{"title":89,"path":90,"stem":91},"Confusion Matrix（混淆矩陣）完整解析","/machine_learning/confusion-matrix","machine_learning/confusion-matrix",{"title":93,"path":94,"stem":95},"Decision Tree 模型完整教學：從原理到 Python 實作","/machine_learning/decision-tree-complete-guide","machine_learning/decision-tree-complete-guide",{"title":97,"path":98,"stem":99},"為什麼 Decision Tree 在 Tabular Data 上常常勝過 Deep Learning？","/machine_learning/decision-tree-vs-deep-learning-on-tabular-data","machine_learning/decision-tree-vs-deep-learning-on-tabular-data",{"title":101,"path":102,"stem":103},"LightGBM 模型入門：理解高效能的 Gradient Boosting 演算法","/machine_learning/lightgbm-intro-for-tabular-data","machine_learning/lightgbm-intro-for-tabular-data",{"title":105,"path":106,"stem":107},"Logistic Regression（Logit 回歸）完整教學","/machine_learning/logistic-regression-complete-guide","machine_learning/logistic-regression-complete-guide",{"title":109,"path":110,"stem":111},"為什麼模型訓練需要 Train / Validation / Test Dataset？","/machine_learning/train-validation-test-dataset","machine_learning/train-validation-test-dataset",{"title":113,"path":114,"stem":115},"XGBoost 原理與實務教學","/machine_learning/xgboost-complete-guide","machine_learning/xgboost-complete-guide",{"title":117,"path":118,"stem":119,"children":120,"page":41},"Network","/network","network",[121],{"title":122,"path":123,"stem":124},"DNS 設定入門：CNAME vs A Record 完整解析","/network/dns-cname-vs-a-record-guide","network/dns-cname-vs-a-record-guide",{"title":126,"path":127,"stem":128,"children":129},"Nuxt","/nuxt","nuxt",[130,133,137,141,145,149,153,157],{"title":131,"path":127,"stem":132},"Nuxt 實戰指南","nuxt/index",{"title":134,"path":135,"stem":136},"Abstraction Layer 與 Adapter 的差別，一次搞懂設計角色","/nuxt/adapter_abstraction_layer","nuxt/adapter_abstraction_layer",{"title":138,"path":139,"stem":140},"Nuxt 4 全面理解 — 專案檔案結構解析","/nuxt/directory_structure","nuxt/directory_structure",{"title":142,"path":143,"stem":144},"Nuxt 前端 build 流程完整解析","/nuxt/frontend_build","nuxt/frontend_build",{"title":146,"path":147,"stem":148},"Nitro 是什麼？從 Nuxt 專案到 Server 與 Edge 的關鍵引擎","/nuxt/nitro","nuxt/nitro",{"title":150,"path":151,"stem":152},"深入理解 Nuxt 的 .nuxt 與 .output：為什麼部署時一定要分清楚？","/nuxt/nuxt_and_output","nuxt/nuxt_and_output",{"title":154,"path":155,"stem":156},"Nuxt 中 dev、build、preview 的差異一次搞懂","/nuxt/nuxt_dev_build_preview","nuxt/nuxt_dev_build_preview",{"title":158,"path":159,"stem":160},"Nuxt Image vs \u003Cimg>：為什麼 Nuxt 3 專案幾乎都該用 \u003CNuxtImg>？","/nuxt/nuxt_image","nuxt/nuxt_image",{"title":162,"path":163,"stem":164,"children":165},"Python 程式開發","/python","python/index",[166,167,171,175],{"title":162,"path":163,"stem":164},{"title":168,"path":169,"stem":170},"如何在 FastAPI 中調用記憶體 Buffer 回傳圖片 (附實例)","/python/memory_buffer","python/memory_buffer",{"title":172,"path":173,"stem":174},"Python 單元測試教學：如何為你的程式撰寫 Test","/python/python-unit-testing-unittest-pytest","python/python-unit-testing-unittest-pytest",{"title":176,"path":177,"stem":178},"如何使用 uv 取代 pip：改善 Python 專案的開發流程","/python/uv","python/uv",{"title":180,"path":181,"stem":182,"children":183,"page":41},"Statistic","/statistic","statistic",[184,188,192,196],{"title":185,"path":186,"stem":187},"卡方檢定（Chi-Square Test）入門教學","/statistic/chi-square-test-intro","statistic/chi-square-test-intro",{"title":189,"path":190,"stem":191},"常見抽樣方法（Sampling Methods）教學：Stratified、Quota、Convenience、Systematic、Simple Random","/statistic/common-sampling-methods-guide","statistic/common-sampling-methods-guide",{"title":193,"path":194,"stem":195},"Cramér’s V 指標介紹：如何衡量兩個類別變數之間的關聯","/statistic/cramers-v-for-categorical-association","statistic/cramers-v-for-categorical-association",{"title":197,"path":198,"stem":199},"Mann–Whitney U 與 Kolmogorov–Smirnov（KS）檢定：非參數統計檢定的入門指南","/statistic/mann-whitney-u-and-ks-test-intro","statistic/mann-whitney-u-and-ks-test-intro",{"title":201,"path":202,"stem":203,"children":204},"WebDev","/web_dev","web_dev",[205,208,234,248,282,312,334],{"title":206,"path":202,"stem":207},"Web 前端開發","web_dev/index",{"title":209,"path":210,"stem":211,"children":212},"瀏覽器與渲染","/web_dev/browser","web_dev/browser/index",[213,214,218,222,226,230],{"title":209,"path":210,"stem":211},{"title":215,"path":216,"stem":217},"瀏覽器儲存空間完整解析：Cookie、localStorage、IndexedDB 到 Cache Storage","/web_dev/browser/browser-storage-comprehensive-guide","web_dev/browser/browser-storage-comprehensive-guide",{"title":219,"path":220,"stem":221},"DOM (Document Object Model) 深入解析","/web_dev/browser/dom","web_dev/browser/dom",{"title":223,"path":224,"stem":225},"Service Worker Request Flow 深入解析","/web_dev/browser/service-worker-request-flow","web_dev/browser/service-worker-request-flow",{"title":227,"path":228,"stem":229},"CSR、SSR 與 SSG 是什麼？前端渲染策略完整比較","/web_dev/browser/ssr_csr_ssg","web_dev/browser/ssr_csr_ssg",{"title":231,"path":232,"stem":233},"Virtual DOM 深入解析：為什麼它能優化前端效能？","/web_dev/browser/virtual_dom","web_dev/browser/virtual_dom",{"title":235,"path":236,"stem":237,"children":238},"圖形技術","/web_dev/graphics","web_dev/graphics/index",[239,240,244],{"title":235,"path":236,"stem":237},{"title":241,"path":242,"stem":243},"為什麼 Three.js 專案幾乎都選擇 CSR？從 SSR 問題談起","/web_dev/graphics/threejs_csr","web_dev/graphics/threejs_csr",{"title":245,"path":246,"stem":247},"WebGL 是什麼？為什麼前端 3D 幾乎都靠它？","/web_dev/graphics/webgl","web_dev/graphics/webGL",{"title":249,"path":250,"stem":251,"children":252},"架構與配置","/web_dev/infrastructure","web_dev/infrastructure/index",[253,254,258,262,266,270,274,278],{"title":249,"path":250,"stem":251},{"title":255,"path":256,"stem":257},"Zeabur + K3s + Nuxt 部署架構完整解析","/web_dev/infrastructure/k3s-zeabur","web_dev/infrastructure/K3s-zeabur",{"title":259,"path":260,"stem":261},"ECS vs Docker vs Kubernetes：從部署堆疊理解三層架構","/web_dev/infrastructure/ecs-docker-kubernetes-stack","web_dev/infrastructure/ecs-docker-kubernetes-stack",{"title":263,"path":264,"stem":265},"ECS vs VPS 是什麼？從部署網站的角度一次搞懂差別","/web_dev/infrastructure/ecs-vs-vps","web_dev/infrastructure/ecs-vs-vps",{"title":267,"path":268,"stem":269},"Zeabur 內網服務連線完整入門指南","/web_dev/infrastructure/k3s-internal-networking","web_dev/infrastructure/k3s-internal-networking",{"title":271,"path":272,"stem":273},"使用 Microservices 架構設計系統的優勢解析","/web_dev/infrastructure/microservices-architecture-advantages","web_dev/infrastructure/microservices-architecture-advantages",{"title":275,"path":276,"stem":277},"Nginx 入門教學：從反向代理到與 Kubernetes 的架構比較","/web_dev/infrastructure/nginx-intro","web_dev/infrastructure/nginx-intro",{"title":279,"path":280,"stem":281},"YAML 配置是什麼？為什麼現代開發都在用它","/web_dev/infrastructure/yaml-configuration","web_dev/infrastructure/yaml-configuration",{"title":283,"path":284,"stem":285,"children":286},"網絡與通訊","/web_dev/network","web_dev/network/index",[287,288,292,296,300,304,308],{"title":283,"path":284,"stem":285},{"title":289,"path":290,"stem":291},"HTTP Request 結構完整解析：從 Request Line 到 Header 一次看懂","/web_dev/network/http-request-structure","web_dev/network/http-request-structure",{"title":293,"path":294,"stem":295},"OSI 模型（Open Systems Interconnection Model）完整解析","/web_dev/network/osi-model","web_dev/network/osi-model",{"title":297,"path":298,"stem":299},"RESTful API 設計原則與實務解析","/web_dev/network/restful-api","web_dev/network/restful-api",{"title":301,"path":302,"stem":303},"RESTful API 五大設計原則深入解析","/web_dev/network/restful-api-principles","web_dev/network/restful-api-principles",{"title":305,"path":306,"stem":307},"Server-Sent Events (SSE) 深入解析與實作教學","/web_dev/network/sse-introduction","web_dev/network/sse-introduction",{"title":309,"path":310,"stem":311},"WebSocket 入門教學：從概念到 Node.js 實作","/web_dev/network/websocket-introduction","web_dev/network/websocket-introduction",{"title":313,"path":314,"stem":315,"children":316},"認證與安全","/web_dev/security","web_dev/security/index",[317,318,322,326,330],{"title":313,"path":314,"stem":315},{"title":319,"path":320,"stem":321},"使用 Cookie 與 Session 建立使用者驗證（完整新手教學）","/web_dev/security/cookie-session-authentication","web_dev/security/cookie-session-authentication",{"title":323,"path":324,"stem":325},"JWT 驗證機制完整解析：從登入流程到實務應用","/web_dev/security/jwt-authentication","web_dev/security/jwt-authentication",{"title":327,"path":328,"stem":329},"Secret Key 簽名是什麼？從零理解資料簽名的本質","/web_dev/security/secret-key-signing","web_dev/security/secret-key-signing",{"title":331,"path":332,"stem":333},"SSH（Secure Shell）是什麼？從遠端登入到安全通道的核心概念","/web_dev/security/ssh","web_dev/security/ssh",{"title":335,"path":336,"stem":337,"children":338},"SEO 與規範","/web_dev/seo","web_dev/seo/index",[339,340,344,348],{"title":335,"path":336,"stem":337},{"title":341,"path":342,"stem":343},"Canonical URL 是什麼？用生活化方式搞懂前端 SEO 的基本保命符","/web_dev/seo/canonical_link","web_dev/seo/canonical_link",{"title":345,"path":346,"stem":347},"robots.txt 是什麼？SEO 的第一道守門員","/web_dev/seo/robot_txt","web_dev/seo/robot_txt",{"title":349,"path":350,"stem":351},"Nuxt SEO 中的 Meta 與 SEO 工具是如何運作的？","/web_dev/seo/seo","web_dev/seo/seo",{"id":353,"title":331,"body":354,"description":745,"extension":746,"links":747,"meta":748,"navigation":755,"path":332,"seo":756,"stem":333,"__hash__":757},"docs/web_dev/security/ssh.md",{"type":355,"value":356,"toc":730},"minimark",[357,361,374,381,384,389,392,400,403,410,431,433,437,444,449,452,473,479,481,485,491,507,510,523,526,528,532,539,553,556,567,569,573,576,594,597,613,616,618,622,628,646,652,654,658,661,682,685,687,691,694,708,711,713,716,723,726],[358,359,331],"h1",{"id":360},"sshsecure-shell是什麼從遠端登入到安全通道的核心概念",[362,363,364,365,369,370,373],"p",{},"為什麼幾乎所有後端與 DevOps 都離不開 SSH？只要你曾經「連線到一台遠端主機」、部署過網站、操作雲端伺服器，或是用 VS Code Remote SSH 開發，你其實早就和 SSH 打過交道了。SSH，全名是 ",[366,367,368],"strong",{},"Secure Shell","，是一種用來",[366,371,372],{},"安全地連線與操作遠端電腦的通訊協定","，它幾乎是現代伺服器世界的「基本語言」。",[362,375,376,377,380],{},"在沒有 SSH 之前，遠端登入通常使用 Telnet、FTP 這類",[366,378,379],{},"明文傳輸","的協定，帳號、密碼在網路上是「裸奔」的狀態。SSH 的出現，正是為了解決這個根本性的安全問題。",[382,383],"hr",{},[385,386,388],"h2",{"id":387},"ssh-的核心定位一條加密又可信的遠端通道","SSH 的核心定位：一條「加密又可信」的遠端通道",[362,390,391],{},"從概念上來看，SSH 做的事情其實很單純，但非常關鍵：",[393,394,395],"blockquote",{},[362,396,397],{},[366,398,399],{},"在不安全的網路上，建立一條加密、可驗證身分的安全通道。",[362,401,402],{},"這條通道一旦建立，你就可以在裡面做各種事，而不用擔心資料被偷看或竄改。",[362,404,405,406,409],{},"在實務上，SSH 幾乎一定是 ",[366,407,408],{},"Client / Server 架構","：",[411,412,413,425],"ul",{},[414,415,416,417,421,422],"li",{},"你電腦上的 ",[418,419,420],"code",{},"ssh"," 指令或工具 → ",[366,423,424],{},"SSH Client",[414,426,427,428],{},"遠端主機（VPS、雲端主機） → ",[366,429,430],{},"SSH Server (sshd)",[382,432],{},[385,434,436],{"id":435},"ssh-能做什麼不只是登入伺服器","SSH 能做什麼？不只是「登入伺服器」",[362,438,439,440,443],{},"很多初學者會以為 SSH 只是「遠端登入用的工具」，但實際上它提供的是一整套",[366,441,442],{},"安全通道能力","。",[445,446,448],"h3",{"id":447},"_1️⃣-遠端登入並操作-shell最基本用途","1️⃣ 遠端登入並操作 Shell（最基本用途）",[362,450,451],{},"最經典、也最常見的用途，就是遠端登入一台主機並操作它的終端機。",[453,454,459],"pre",{"className":455,"code":456,"language":457,"meta":458,"style":458},"language-bash shiki shiki-themes github-dark","ssh user@server_ip\n","bash","",[418,460,461],{"__ignoreMap":458},[462,463,466,469],"span",{"class":464,"line":465},"line",1,[462,467,420],{"class":468},"svObZ",[462,470,472],{"class":471},"sU2Wk"," user@server_ip\n",[362,474,475,476,443],{},"這行指令的意思是：在你的電腦上，透過 SSH，取得遠端主機上一個「看起來就像本機 Terminal 的操作環境」。你輸入的每一個指令、看到的每一行輸出，",[366,477,478],{},"全部都在加密通道中傳輸",[382,480],{},[445,482,484],{"id":483},"_2️⃣-安全地傳輸檔案scp-sftp","2️⃣ 安全地傳輸檔案（SCP / SFTP）",[362,486,487,488,443],{},"SSH 不只可以跑指令，也可以用來",[366,489,490],{},"安全地傳檔案",[453,492,494],{"className":455,"code":493,"language":457,"meta":458,"style":458},"scp app.tar.gz user@server:/var/www/app\n",[418,495,496],{"__ignoreMap":458},[462,497,498,501,504],{"class":464,"line":465},[462,499,500],{"class":468},"scp",[462,502,503],{"class":471}," app.tar.gz",[462,505,506],{"class":471}," user@server:/var/www/app\n",[362,508,509],{},"或是使用 SFTP：",[453,511,513],{"className":455,"code":512,"language":457,"meta":458,"style":458},"sftp user@server\n",[418,514,515],{"__ignoreMap":458},[462,516,517,520],{"class":464,"line":465},[462,518,519],{"class":468},"sftp",[462,521,522],{"class":471}," user@server\n",[362,524,525],{},"這些工具本質上都是「跑在 SSH 通道裡的檔案傳輸協定」，差別只是操作方式不同。也正因如此，現代幾乎不再使用傳統的 FTP。",[382,527],{},[445,529,531],{"id":530},"_3️⃣-金鑰驗證key-based-authentication","3️⃣ 金鑰驗證（Key-based Authentication）",[362,533,534,535,538],{},"SSH 最強大的功能之一，是",[366,536,537],{},"不需要密碼登入","。透過一組「公開金鑰 / 私密金鑰」：",[411,540,541,547],{},[414,542,543,546],{},[366,544,545],{},"私鑰","：留在你自己的電腦",[414,548,549,552],{},[366,550,551],{},"公鑰","：放在伺服器上",[362,554,555],{},"登入時，伺服器會驗證「你是否真的持有對應的私鑰」，而不是要求你輸入密碼。這種方式不但更安全，也更適合：",[411,557,558,561,564],{},[414,559,560],{},"自動化部署（CI/CD）",[414,562,563],{},"Server-to-server 溝通",[414,565,566],{},"無人值守的程式連線",[382,568],{},[445,570,572],{"id":571},"_4️⃣-port-forwardingssh-tunnel","4️⃣ Port Forwarding（SSH Tunnel）",[362,574,575],{},"SSH 還能建立「加密的轉送通道」，把遠端服務「安全地搬到本機」。例如，把遠端資料庫綁到本機：",[453,577,579],{"className":455,"code":578,"language":457,"meta":458,"style":458},"ssh -L 5432:localhost:5432 user@server\n",[418,580,581],{"__ignoreMap":458},[462,582,583,585,589,592],{"class":464,"line":465},[462,584,420],{"class":468},[462,586,588],{"class":587},"sDLfK"," -L",[462,590,591],{"class":471}," 5432:localhost:5432",[462,593,522],{"class":471},[362,595,596],{},"這代表：",[411,598,599,605,608],{},[414,600,601,602],{},"本機連 ",[418,603,604],{},"localhost:5432",[414,606,607],{},"實際流量透過 SSH",[414,609,610,611],{},"轉送到遠端的 ",[418,612,604],{},[362,614,615],{},"在實務上，這常用於私有資料庫存取、避免直接暴露服務 Port，或是在防火牆嚴格的環境中除錯。",[382,617],{},[445,619,621],{"id":620},"_5️⃣-作為其他工具的安全基礎","5️⃣ 作為其他工具的安全基礎",[362,623,624,625,409],{},"你每天用的很多工具，其實",[366,626,627],{},"底層都是 SSH",[411,629,630,637,640,643],{},[414,631,632,633,636],{},"Git over SSH (",[418,634,635],{},"git@github.com:repo.git",")",[414,638,639],{},"VS Code Remote SSH",[414,641,642],{},"部署工具（rsync、Ansible）",[414,644,645],{},"雲端平台的管理通道",[362,647,648,649,443],{},"SSH 不只是單一工具，而是整個開發與維運生態的",[366,650,651],{},"安全基石",[382,653],{},[385,655,657],{"id":656},"ssh-為什麼安全簡化但重要的三個概念","SSH 為什麼安全？簡化但重要的三個概念",[362,659,660],{},"從設計上來看，SSH 的安全性來自三個關鍵點：",[662,663,664,670,676],"ol",{},[414,665,666,669],{},[366,667,668],{},"加密通訊","：所有資料在傳輸前都會被加密，避免被竊聽。",[414,671,672,675],{},[366,673,674],{},"身分驗證","：Client 驗證 Server（避免連到假主機）；Server 驗證 Client（密碼或金鑰）。",[414,677,678,681],{},[366,679,680],{},"完整性檢查","：確保資料在傳輸途中沒有被竄改。",[362,683,684],{},"你不需要記住所有加密演算法，但要知道：SSH 不是「單純把指令送過去」，而是一整套嚴謹的安全協定。",[382,686],{},[385,688,690],{"id":689},"為什麼學-nuxtnodedevops-一定會碰到-ssh","為什麼學 Nuxt、Node、DevOps 一定會碰到 SSH？",[362,692,693],{},"如果你有在做這些事情，SSH 幾乎是必備技能：",[411,695,696,699,702,705],{},[414,697,698],{},"部署 Nuxt / Node 專案到 VPS",[414,700,701],{},"使用 Railway、Zeabur、AWS、GCP",[414,703,704],{},"設定 CI/CD pipeline",[414,706,707],{},"使用 Remote SSH 直接在伺服器上開發",[362,709,710],{},"理解 SSH，會讓你清楚知道為什麼要設 key、為什麼不能亂開 port，以及為什麼有些服務「只能從內網連」。",[382,712],{},[385,714,715],{"id":715},"結語",[362,717,718,719,722],{},"SSH（Secure Shell）不是一個單純的指令，而是一種",[366,720,721],{},"安全通道的設計哲學","。它讓你能在不可信的網路環境中，依然安全地操作、部署與管理遠端系統。",[362,724,725],{},"只要你走上後端、全端、DevOps 這條路，SSH 幾乎一定會陪你很久。越早理解它的角色與能力，後面的基礎就會越穩。",[727,728,729],"style",{},"html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}",{"title":458,"searchDepth":731,"depth":731,"links":732},2,[733,734,742,743,744],{"id":387,"depth":731,"text":388},{"id":435,"depth":731,"text":436,"children":735},[736,738,739,740,741],{"id":447,"depth":737,"text":448},3,{"id":483,"depth":737,"text":484},{"id":530,"depth":737,"text":531},{"id":571,"depth":737,"text":572},{"id":620,"depth":737,"text":621},{"id":656,"depth":731,"text":657},{"id":689,"depth":731,"text":690},{"id":715,"depth":731,"text":715},"深入介紹 SSH（Secure Shell）的用途與功能，理解它如何成為現代伺服器管理、遠端開發與自動化部署中不可或缺的安全基礎。","md",null,{"tags":749,"category":203,"date":754},[420,750,751,752,753],"secure-shell","server","devops","security","2026-02-10",true,{"title":331,"description":745},"wvU9W10SIXh-er2zZoSRj4ijWzOCk3dH37yyYu8FBj4",[759,761],{"title":327,"path":328,"stem":329,"description":760,"children":-1},"不用先懂 JWT，也能理解 secret key 簽名在做什麼。帶你從問題出發，掌握資料完整性與驗證機制的核心原理。",{"title":335,"path":336,"stem":337,"description":762,"children":-1},"掌握搜尋引擎最佳化（SEO）技巧、Canonical 連結以及 Robots.txt 等 Web 規範。",1776690848619]