推荐使用 ssh-keygen -t ed25519 -c "user@host"(优先)或 ssh-keygen -t rsa -b 4096 -c "user@host"(兼容旧系统),ed25519 更安全高效,rsa-4096 为稳妥备选。

ssh-keygen 生成密钥对时该用什么参数
直接跑 ssh-keygen 默认生成 RSA 2048 位密钥,但现代环境建议明确指定算法和长度。推荐用:ssh-keygen -t ed25519 -C "user@host"(优先)或 ssh-keygen -t rsa -b 4096 -C "user@host"(兼容旧系统)。ed25519 更快更安全,OpenSSH 6.5+ 均支持;rsa -b 4096 是稳妥 fallback。全程回车即可,私钥不设密码——否则每次 ssh 都要输 passphrase,就不是“免密”了。
ssh-copy-id 失败时怎么手动部署公钥
常见失败原因:目标主机禁用了密码登录、ssh-copy-id 命令不存在、或网络策略拦截。此时必须手动操作,且顺序和权限不能错:
- 在本地执行
cat ~/.ssh/id_rsa.pub,复制整行输出(含ssh-rsa或ssh-ed25519开头) - 登录目标主机(用密码或其他方式),确保
~/.ssh目录存在:mkdir -p ~/.ssh && chmod 700 ~/.ssh - 追加公钥到
~/.ssh/authorized_keys:echo "复制的内容" >> ~/.ssh/authorized_keys - 立刻修复权限:
chmod 600 ~/.ssh/authorized_keys(SSH 服务端默认拒绝 644 权限的该文件)
双向免密必须两边都配,但别重复生成密钥
双向 ≠ 两边各自生成密钥再互传。正确做法是:只在 A 机生成一套密钥,把 A 的公钥传到 B 的 authorized_keys;再在 B 机生成另一套(或复用 A 的私钥——不推荐),把 B 的公钥传到 A 的 authorized_keys。关键点:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 每台机器的
~/.ssh/id_*.pub只负责“对外认证自己”,不是“登录别人”的凭证 - A 登录 B 时,用的是 A 的私钥,B 检查的是自己
authorized_keys里有没有 A 的公钥 - 所以 A 和 B 的
authorized_keys文件内容不同,各自存对方的公钥 - 不要把 A 的私钥
id_rsa拷给 B——这等于交出身份钥匙,极度危险
/etc/ssh/sshd_config 的三个关键配置项
服务端配置稍有偏差就会导致免密失败,必须确认以下三行未被注释且值为 yes:
-
PubkeyAuthentication yes(开启公钥认证) -
AuthorizedKeysFile .ssh/authorized_keys(路径必须匹配,不能写成~/.ssh/authorized_keys) -
StrictModes yes(强制检查~/.ssh和authorized_keys权限,若目录或文件权限过宽会静默拒绝)
改完记得重启服务:sudo systemctl restart sshd。别忽略 StrictModes——它会让 SSH 拒绝 ~ 目录权限 > 755、~/.ssh > 700、authorized_keys > 600 的任何情况,这是最容易被跳过的硬性门槛。










