ssh-copy-id

将本地公钥复制到远程服务器的 authorized_keys 文件中,实现免密登录

语法

ssh-copy-id [options] [user@]hostname

参数

参数说明示例级别
-i 指定要复制的公钥文件 ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host 常用
-p 指定远程服务器端口 ssh-copy-id -p 2222 user@host 常用
-f 强制模式,不检查密钥是否已存在 ssh-copy-id -f -i ~/.ssh/key.pub user@host 进阶
-n 模拟运行,不实际复制 ssh-copy-id -n user@host 进阶

示例

复制默认公钥

ssh-copy-id user@192.168.1.100
自动选择 ~/.ssh/id_*.pub 中的公钥

复制指定公钥

ssh-copy-id -i ~/.ssh/work_key.pub deploy@server.com
多密钥时指定要复制哪个公钥

指定端口复制

ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 root@host
SSH 端口非默认 22 时使用

手动复制公钥(无 ssh-copy-id 时)

cat ~/.ssh/id_ed25519.pub | ssh user@host 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys'
Windows 或某些系统没有 ssh-copy-id 时的替代方案

常见错误

/usr/bin/ssh-copy-id: ERROR: No identities found 没有找到公钥文件,先用 ssh-keygen 生成密钥对
Permission denied (publickey) 首次复制需要密码认证,确认服务器允许密码登录(PasswordAuthentication yes)

技巧

相关命令