ssh-copy-id工具的作用

ssh-copy-id工具的作用

你看到的 ssh-copy-id 本质上是一个——
👉 把“本机公钥”安全、正确地安装到远程服务器的工具

很多人第一次看到都会以为是:

“ssh copy?”
“是不是 scp 的某种变体?”

其实不是 😄


一句话解释(最重要)

ssh-copy-id = 自动把你的 id_rsa.pub 加到远端的 ~/.ssh/authorized_keys

并且顺手把权限全都设置正确


它到底帮你干了什么?

当你执行:

ssh-copy-id root@192.168.31.213  

它会在后台自动完成👇

1️⃣ 读取你本机的公钥:

~/.ssh/id_rsa.pub  

2️⃣ 用 密码方式 ssh 登录远端(最后一次要输密码)

3️⃣ 在远端做这些事(自动):

mkdir -p ~/.ssh  
chmod 700 ~/.ssh  
cat id_rsa.pub >> ~/.ssh/authorized_keys  
chmod 600 ~/.ssh/authorized_keys  

✅ 一步到位
✅ 不会覆盖已有 key
✅ 不会拷贝私钥
✅ 权限不会错


为什么大家都推荐它?

因为 手动做很容易踩坑

常见坑 结果
传了 id_rsa(私钥) ❌ 安全事故
权限不对 ❌ 免密登录失败
覆盖了 authorized_keys ❌ 之前的 key 全没了
scp 路径写错 ❌ 白折腾

👉 ssh-copy-id 把这些坑 全部屏蔽掉了


它和 scp / rsync 的本质区别

工具 用途
scp 传文件
rsync 同步目录
ssh-copy-id 安装 SSH 公钥(一次性)

ssh-copy-id配置工具
不是通用拷贝工具


常见问题

Q1:它会不会覆盖服务器上的 key?

不会,只会追加


Q2:它用的到底是哪把 key?

默认顺序:

  1. ~/.ssh/id_rsa.pub
  2. ~/.ssh/id_ed25519.pub
  3. 其他可用 key

你也可以指定:

ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host  

Q3:mac / Linux 都有吗?

基本都有

  • macOS:自带
  • Ubuntu / Debian:openssh-client
  • CentOS / Rocky:openssh-clients

最重要的一条安全原则(再强调一次)

🔒 私钥永远不出本机

🌍 服务器只存公钥

ssh-copy-id 正是为了保证这条原则不被破坏而存在的。