温馨提示×

CentOS SSH密钥如何生成

小樊
35
2026-07-07 23:23:32
栏目: 智能运维

在 CentOS 上生成 SSH 密钥一般使用 ssh-keygen 命令,下面是常见、标准的做法。


一、生成 SSH 密钥(默认方式)

  1. 登录到 CentOS 服务器
  2. 执行以下命令:
ssh-keygen

按提示操作:

  • Enter file in which to save the key
    默认:/root/.ssh/id_rsa(root 用户)
    普通用户:/home/用户名/.ssh/id_rsa
    ✅ 直接回车即可

  • Enter passphrase
    设置密钥密码(可选)

    • 若不想设置,直接回车
    • 设置后安全性更高,但每次使用需输入密码
  • Enter same passphrase again
    再次确认


二、生成后的文件说明

生成后会在 ~/.ssh/ 目录下看到:

~/.ssh/id_rsa      # 私钥(非常重要,不能泄露)
~/.ssh/id_rsa.pub  # 公钥(可放到远程服务器)

三、将公钥复制到远程服务器(免密登录)

方式 1:使用 ssh-copy-id(推荐)

ssh-copy-id user@远程服务器IP

示例:

ssh-copy-id root@192.168.1.100

输入一次远程服务器密码后,以后即可免密登录。


方式 2:手动复制公钥

  1. 查看本地公钥:
cat ~/.ssh/id_rsa.pub
  1. 登录远程服务器,将内容追加到:
~/.ssh/authorized_keys
  1. 设置权限(非常重要):
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

四、测试 SSH 免密登录

ssh user@远程服务器IP

如果无需输入密码即可登录,说明成功 ✅


五、生成指定类型或长度的密钥(可选)

生成 ED25519(推荐,更安全)

ssh-keygen -t ed25519

生成 4096 位 RSA

ssh-keygen -t rsa -b 4096

六、常见问题排查

1. SSH 无法免密登录

检查:

ls -ld ~/.ssh
ls -l ~/.ssh/authorized_keys

确保:

  • .ssh 权限是 700
  • authorized_keys 权限是 600

2. SELinux 影响(CentOS 常见)

restorecon -Rv ~/.ssh

3. SSH 服务未开启

systemctl status sshd

如果你需要的是 CentOS 7 / 8 / Stream多用户配置禁止密码登录Git / Jenkins 使用 SSH 密钥,可以继续问我。

0