最安全、最推荐的方式是用 ssh-copy-id 命令,它会自动处理目录创建、权限设置和公钥追加;支持指定密钥(-i)、端口(-p),首次运行需输一次密码,成功后自动设 ~/.ssh 为700、authorized_keys 为600。

最安全、最推荐的方式是用 ssh-copy-id 命令,它会自动处理目录创建、权限设置和公钥追加,避免手动操作导致的常见权限错误。
使用 ssh-copy-id 一键推送(首选)
这是官方推荐、最稳妥的方法,适用于绝大多数 Linux 发行版:
- 执行命令:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@remote_ip(推荐 ed25519 密钥) - 若密钥是默认 RSA,可省略
-i参数:ssh-copy-id user@remote_ip - 如远程 SSH 端口非 22,加上
-p选项,例如:ssh-copy-id -p 2222 user@remote_ip - 首次运行会要求输入一次远程用户的密码,成功后公钥即写入
~/.ssh/authorized_keys - 该命令还会自动确保
~/.ssh目录权限为 700、authorized_keys文件权限为 600
手动复制(当 ssh-copy-id 不可用时)
适用于精简系统(如某些容器或嵌入式环境),需严格控制权限:
- 运行完整命令(单行,注意引号和管道):
cat ~/.ssh/id_ed25519.pub | ssh user@remote_ip "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys" - 务必包含
chmod 700 ~/.ssh和chmod 600 ~/.ssh/authorized_keys,缺一不可 - 不要用
scp直接传文件再手动改权限——容易遗漏或出错
关键安全注意事项
无论用哪种方式,以下三点直接影响是否能成功认证:
- 本地私钥(如
id_ed25519)权限必须是600:chmod 600 ~/.ssh/id_ed25519 - 远程
~/.ssh目录不能被组或其他用户写入(否则 SSH 拒绝读取公钥) - 远程服务器需确认
/etc/ssh/sshd_config中启用:PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys
修改后需重启服务:sudo systemctl restart sshd
不复杂但容易忽略,核心就是“密钥生成正确 + 公钥送达准确 + 权限设置严格 + 服务端配置就绪”。











