ssh-keygen如何输出key到特定目录

ssh-keygen 使用 -f 参数即可指定私钥输出路径(公钥会自动在同目录生成 .pub 文件)。

1.基本用法

1
ssh-keygen -t ed25519 -f /data/sshkeys/id_ed25519

执行后生成:

1
2
/data/sshkeys/id_ed25519
/data/sshkeys/id_ed25519.pub

注意:如果目录不存在,需要先创建:

1
mkdir -p /data/sshkeys

2.示例

1
2
3
4
5
ssh-keygen \
-t ed25519 \
-C "deploy@server" \
-f /data/sshkeys/deploy_ed25519 \
-N ""

参数含义:

  • -t ed25519:推荐算法,比 RSA 更快更安全
  • -C:备注信息(可选)
  • -f:输出路径
  • -N "":空密码(自动化部署常用)

2.1权限注意事项(关键点)

SSH 对私钥权限敏感:

1
2
3
4
# 目录权限
chmod 700 /data/sshkeys
# 文件权限
chmod 600 /data/sshkeys/id_ed25519

否则 SSH 可能拒绝使用该 key。

3.运维自动化场景

在 CI/CD 或批量部署时,常见方式是:

  • 固定 key 目录,例如 /data/sshkeys/
  • 主机按用途分 key:deploy_, backup_, git_
  • 使用软链接或环境变量切换 key
  • ssh config 指定默认 key

例如:

1
~/.ssh/config
1
2
3
Host gitlab
HostName gitlab.example.com
IdentityFile /data/sshkeys/git_ed25519

这样不同服务走不同 key,权限与审计更清晰,也便于容器或自动化环境统一挂载 key 目录。