教程

如何把 SSH 密钥复制到服务器(ssh-copy-id 及替代法)

要用密钥登录,你的公钥必须在服务器的 authorized_keys 里。最简单是 ssh-copy-id;Windows 和受限 shell 的手动法;以及手机上的一键法。

CC Chen Chen· 创始人·2026 年 6 月 14 日·阅读 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