ssh-copy-id命令

Eave 2026.01.22

ssh-copy-id 使用本地可用的密钥授权登录远程计算机。

ssh-copy-id 可以把本地主机的公钥复制到远程主机的 authorized_keys 文件上。ssh-copy-id 也会给远程主机的用户主目录(home)和 ~/.ssh 和 ~/.ssh/authorized_keys 设置合适的权限。

命令格式:ssh-copy-id [-n] [-i [identity_file]] [-p port] [-o ssh_option] [user@]hostname

选项说明

-i:指定认证文件(公钥)

-f:强制模式

-n:测试,不实际替换

-p:指定端口

-o:指定其他 ssh参数

使用默认公钥登录‌:将本地默认公钥~/.ssh/id_rsa.pub复制到远程服务器192.168.1.110的user账户下。

ssh-copy-id user@192.168.1.110

使用指定公钥文件‌:将自定义公钥~/.ssh/my_other_key.pub复制到远程服务器。

ssh-copy-id -i ~/.ssh/my_other_key.pub user@server

指定端口并强制复制‌:连接到远程服务器的非标准端口2222,并强制覆盖已存在的公钥。

ssh-copy-id -p 2222 -f user@server

注意事项‌

身份验证要求‌:在复制公钥之前,ssh-copy-id 需要通过密码方式对远程服务器进行一次身份验证,以确保操作的合法性。

密钥文件权限‌:本地的私钥文件(如 ~/.ssh/id_rsa)权限应设置为 400 或 600,否则 SSH 客户端可能会因安全原因忽略该私钥。

重复添加‌:若多次运行命令且未使用 -f 选项,ssh-copy-id 通常会检查 authorized_keys 文件以避免添加重复的公钥。但如果公钥内容发生变化(如重新生成了密钥对),则可能需要手动清理旧的公钥条目。