快轉到主要內容
  1. 教學文章/

設置和管理 SSH 金鑰

·2 分鐘· loading · loading · ·
SSH
每日拍拍
作者
每日拍拍
科學家 X 科技宅宅
目錄

簡介
#

OpenSSH(Open Secure Shell)是一套開放原始碼的安全通訊工具組,用於在不安全的網路中安全地進行遠端連線、檔案傳輸與其他網路服務。它由 OpenBSD 團隊開發,目的是取代早期不安全的 Telnet、rlogin、FTP 等協定。

主要功能
#

  • 遠端連線(ssh) 讓你可以安全地登入遠端主機、執行指令。

  • 檔案傳輸(scpsftp) 透過加密連線傳送、接收檔案。

  • 金鑰認證 支援 SSH 金鑰對驗證,提高安全性、避免密碼被盜。

  • 遠端指令執行、轉發連線 可以執行遠端命令,或做端口轉發(如 tunnel VPN)。

常用工具
#

  • ssh:連線與登入遠端主機

  • ssh-keygen:產生公私鑰對

  • scp:加密檔案複製

  • sftp:類似 FTP 但走 SSH 通道

  • ssh-agent:管理私鑰、無密碼自動登入

安裝
#

基本上不管是 Windows, Mac, 或是 Linux, 現在系統幾乎都有內建 OpenSSH 了。理論上不需要再額外的安裝。

可以在終端機輸入

which ssh-keygen

來確認有無這個指令。

Windows 用戶可以用 where ssh-keygen 或是 Get-Command ssh-keygen 如果沒有的話,在 Settings > System > Optional features. Add a feature, 然後選擇安裝 OpenSSH Clinet 與 OpenSSH Server.

簡易使用
#

在大部分的使用上,你可以簡單的只是用一個 SSH 金鑰,並用預設的金鑰名稱。 只要在終端機輸入:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

輸入後只要一直按 Enter 使用預設值就好。 這樣它會在 ~/.ssh/ 裡面創設兩個檔案: id_rsaids_rsa.pub

其中 id_rsa 是你的私密金鑰,絕對不能告訴別人。 id_rsa.pub 則使公開的金鑰,可以上傳到別的伺服器(譬如: GitHub)。

顯示公開金鑰的內容可以用:

cat ~/.ssh/id_rsa.pub

然後複製就好。

Windows 用戶
#

Warning! Windows 使用者,沒有 cat 指令。

如果是 Windows 使用者的話可以在 PowerShell 中輸入:

type C:\Users\你的帳號\.ssh\id_rsa.pub

或是

Get-Content $env:USERPROFILE\.ssh\id_rsa.pub

進階使用
#

ED25519 金鑰
#

如果不想用 RSA 金鑰,只要在創立時使用 -t ed25519 就可以改用 ED25519 金鑰。

ssh-keygen -t ed25519 -C "your_email@example.com"

多組金鑰與管理
#

如果你想要在不同的伺服器使用不同的金鑰,可以在創立時添加 -f 來指定金鑰的檔名:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_example1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com" -f ~/.ssh/id_rsa_example2

如果有多把金鑰,手動每次都輸入密碼很麻煩。這時可以啟用 ssh-agent 幫你記住解鎖後的金鑰。

macOS/Linux
#

eval "$(ssh-agent -s)"

Windows
#

Start-Service ssh-agent

加入金鑰
#

ssh-add ~/.ssh/id_rsa_example1

Windows 用戶: ssh-add $env:USERPROFILE\.ssh\id_rsa_example1

查看已加入的金耀
#

ssh-add -l

移除金鑰
#

ssh-add -d ~/.ssh/id_rsa_example1

小技巧
#

  • 私鑰務必妥善保存,不可外洩。
  • 建議每把金鑰都設密碼,安全性更高。
  • 若經常重啟 terminal,可將 eval "$(ssh-agent -s)" 與常用 ssh-add 指令寫進啟動腳本(如 .bashrc.zshrc)。

相關文章

管理秘密環境變數 python-dotenv
·1 分鐘· loading · loading
Python Dotenv
超好用的本地LLM: Ollama
·6 分鐘· loading · loading
好玩軟體 LLM Ollama
在LLM的時代,為什麽我還要寫部落格?
·3 分鐘· loading · loading
LLM AI Blog
GitHub 指令工具
·2 分鐘· loading · loading
版本控制 Git 指令模式 Github
版本控制軟體 Git - 安裝篇
·3 分鐘· loading · loading
版本控制 Git