ssh-copy-id — 複製 SSH 公鑰到遠端主機
一鍵將本機 SSH 公鑰複製到遠端,設定免密碼登入。
語法
ssh-copy-id [選項] [使用者@]主機
常用選項
| 選項 | 說明 | 範例 |
|---|---|---|
-i 公鑰檔 |
指定要複製的公鑰檔案(預設 ~/.ssh/id_rsa.pub) | ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host |
-p port |
指定 SSH port | ssh-copy-id -p 2222 user@host |
-n |
模擬執行(不實際複製,只顯示會做什麼) | ssh-copy-id -n user@host |
使用範例
範例 1:複製公鑰到遠端(最常用)
需要輸入一次遠端的密碼,之後就可以免密碼登入。
$ ssh-copy-id user@server.example.com
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/user/.ssh/id_ed25519.pub"
user@server.example.com's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'user@server.example.com'"
範例 2:指定要複製的金鑰
若有多個金鑰,使用 -i 指定要複製的公鑰。
$ ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server
範例 3:手動複製公鑰(無 ssh-copy-id 時)
若目標環境沒有 ssh-copy-id,可手動複製。
$ cat ~/.ssh/id_ed25519.pub | ssh user@server "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
常見錯誤與排錯
Permission denied (publickey)
- 原因
- 公鑰複製後仍無法登入,可能是 authorized_keys 或 .ssh 目錄權限不正確。
- 解法
- 在遠端執行:chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys