教學

如何把 SSH 金鑰複製到伺服器(ssh-copy-id 及替代法)

要用金鑰登入,你的公鑰必須在伺服器的 authorized_keys 裡。最簡單是 ssh-copy-id;Windows 和受限 shell 的手動法;以及手機上的一鍵法。

CC Chen Chen· 創始人·2026 年 6 月 24 日·閱讀 5 分鐘

一句話結論

要用金鑰(而不是密碼)登入,你的公鑰必須在伺服器的 ~/.ssh/authorized_keys 檔案裡。把它放進去最簡單的辦法是 ssh-copy-id:

ssh-copy-id user@host

它讓你輸一次密碼、追加你的公鑰,從此用金鑰登入。本文講 ssh-copy-id、它不可用時的手動法(Windows、受限 shell)、以及手機上的一鍵法。

方法 1 —— ssh-copy-id(Linux/macOS)

# 复制你的默认公钥(~/.ssh/id_ed25519.pub)
ssh-copy-id user@host

# 或指定某把密钥:
ssh-copy-id -i ~/.ssh/mykey.pub user@host

它這一次用你的密碼登入,需要時以正確權限建立 ~/.ssh,並把金鑰追加到 authorized_keys。還沒有金鑰?先 ssh-keygen -t ed25519 產生(見 Ed25519 vs RSA)。

方法 2 —— 手動(Windows,或沒有 ssh-copy-id)

Windows 不自帶 ssh-copy-id。手動追加——把你 .pub 檔案的內容貼進伺服器的 authorized_keys:

# 从任意机器,一行搞定:
cat ~/.ssh/id_ed25519.pub | ssh user@host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys"

Windows PowerShell:

type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@host "cat >> .ssh/authorized_keys"

chmod 很關鍵:權限太開放時 SSH 會忽略 authorized_keys。複製後金鑰還不生效,看 Permission denied (publickey)

方法 3 —— 手機上一鍵

手機上沒有 ssh-copy-id 命令,也沒法方便地把檔案透過 SSH 管過去。好的行動用戶端替你做:TermAI 在裝置 Keychain 裡產生 Ed25519 金鑰,並有一個部署到伺服器動作,透過一個已有的可用登入把公鑰那半寫進 authorized_keys——和 ssh-copy-id 做的一樣,一鍵完成。之後你用金鑰連線,無需密碼。

手機上用已部署金鑰連上伺服器
ssh-copy-id 的行動等價物:一鍵把 App 產生的公鑰部署進伺服器的 authorized_keys,走你已有的登入。

驗證成功

重新連線——應該不再要密碼。如果還要,說明金鑰沒被接受:看 SSH 還在要密碼 的六個常見原因(權限、使用者錯、sshd 設定……)。

常見問題

怎麼把 SSH 金鑰複製到伺服器?
ssh-copy-id user@host(Linux/macOS)。Windows 或受限環境下,手動把 .pub 檔案追加到伺服器的 ~/.ssh/authorized_keys。手機上用 TermAI 這類一鍵部署金鑰的用戶端。

ssh-copy-id 到底做了什麼?
它用你的密碼登入一次,把你的公鑰追加到 ~/.ssh/authorized_keys 並設好權限。你的私鑰從不離開你的機器。

authorized_keys 在哪?
在你登入的那個使用者的家目錄:伺服器上的 ~/.ssh/authorized_keys。它必須是 600,在 700 的 .ssh 目錄裡。

找不到 ssh-copy-id 怎麼辦?
它不在 Windows 和一些精簡系統上。手動管過去:cat key.pub | ssh user@host "cat >> ~/.ssh/authorized_keys"

快速事實

  • 目標:你的公鑰進伺服器的 ~/.ssh/authorized_keys
  • 最簡單:ssh-copy-id user@host(Linux/macOS)
  • 手動 / Windows:把 .pub 檔案管進 authorized_keys,再 chmod 600/700
  • 手機:一鍵部署(TermAI)——和 ssh-copy-id 同效
  • 只複製公鑰;私鑰留在你裝置上
Try TermAI

Free on iOS and Android. 5 AI requests/day on the free tier, plus unlimited SSH/SFTP and built-in Tailscale.

CC
Chen Chen — Founder of TermAI

Writes about mobile DevOps, terminal UX, and the surprising depth of "boring" infrastructure.

Was this useful? ← Back to blog