跳至主要內容

產生金鑰

要在執行個體上開啟 shell,你得先有一組 SSH 金鑰組。如果你已經有了,直接沿用。先看看你手上有什麼:

ls ~/.ssh/*.pub

列在那裡的任何 .pub 檔案都是可以加進 Superheat 的公開金鑰,只要它的類型在支援清單上。如果那裡什麼都沒有,就產生一組。

產生 ed25519 金鑰

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

ssh-keygen 會問你要把金鑰存到哪裡,以及要不要設定通行密語。按 Enter 接受預設位置。

-C 後面的文字是隨公開金鑰一起帶著走的註解。只要能提醒你這把金鑰放在哪台機器上,寫什麼都行。

檔案會落在哪裡

路徑這是什麼誰看得到
~/.ssh/id_ed25519私密金鑰沒有人 — 它永遠不該離開你的機器
~/.ssh/id_ed25519.pub公開金鑰這就是你要貼進 Superheat 的那一半

公開金鑰是單獨一行:

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ8mQ2sT9vXbN1kR4pLwZ0aYcE7hJ6uD3fGgH5iKmNoP you@example.com
要貼的是 .pub 檔案,絕對不是另一個

沒有 .pub 副檔名的那個檔案是你的私密金鑰,它的開頭是 -----BEGIN OPENSSH PRIVATE KEY-----。如果你曾經把它貼進表單、聊天室或工單,就重新產生一組金鑰組並刪掉舊的。

複製公開金鑰

平台指令
macOSpbcopy < ~/.ssh/id_ed25519.pub
Linux、X11xclip -selection clipboard < ~/.ssh/id_ed25519.pub
Linux、Waylandwl-copy < ~/.ssh/id_ed25519.pub

如果這些都沒安裝,就把檔案印出來手動複製。它只有一行,而且整行都不能少。

cat ~/.ssh/id_ed25519.pub

權限

只要機器上的其他使用者讀得到私密金鑰,OpenSSH 就會拒絕使用它。如果你是從備份還原 ~/.ssh,或在機器之間複製過它,請重設權限模式:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub

通行密語

通行密語會把硬碟上的私密金鑰加密,這樣就算檔案被人拿走,那份副本對他也沒有用。設一個。

代價是要打字。ssh-agent 會在你這次工作階段接下來的時間裡保留解密後的金鑰:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

在 macOS 上,把通行密語存進登入鑰匙圈,代理程式在重新開機後就能再次取用這把金鑰:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

你隨時可以新增、變更或移除通行密語。這只會改寫私密金鑰檔案 — 公開金鑰和它的指紋不會變,所以已經加進 Superheat 的金鑰照樣能用:

ssh-keygen -p -f ~/.ssh/id_ed25519

在 Windows 上

ssh-keygen 隨 Windows 10 和 Windows 11 內建的 OpenSSH 用戶端一起提供。開啟 PowerShell,執行同一道指令:

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

金鑰組會落在 C:\Users\<you>\.ssh\。把公開金鑰印出來,或直接送進剪貼簿:

Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub | Set-Clipboard

想省下重複輸入通行密語的麻煩,就啟動代理程式服務並載入金鑰。Set-Service 那一行需要系統管理員權限的 PowerShell,而且只需要執行一次:

Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
ssh-add $env:USERPROFILE\.ssh\id_ed25519

在 Windows 上有兩件事特別容易絆倒人:

情況該怎麼做
你在 WSL 裡工作WSL 有自己的家目錄,所以 Linux 裡的 ~/.ssh 並不是 C:\Users\<you>\.ssh。你打算在哪個環境執行 ssh,就在那個環境產生金鑰。
你使用 PuTTY.ppk 檔案不是 OpenSSH 公開金鑰。請在 PuTTYgen 裡,從標示為 "Public key for pasting into OpenSSH authorized_keys file" 的方框中把文字複製出來 — 那才是 Superheat 接受的內容。

檢查指紋

ssh-keygen -lf ~/.ssh/id_ed25519.pub
256 SHA256:Pr6lxPUhwJ7+VHus18B6LLkVm4mFu0L9hn8eqgpOyag you@example.com (ED25519)

SHA256: 這個值就是你把金鑰加進去之後,主控台顯示在金鑰旁邊的內容,你也是靠它分辨兩把金鑰。請參閱支援的金鑰類型

金鑰產生好之後,就把它加進你的帳號 — 在你部署任何東西之前。