ssh中公钥和私钥怎么生成

ssh-keygen 是一个用于生成 SSH 密钥对的工具,通常用于 SSH(Secure Shell)协议的密钥认证。SSH 密钥对包括一个公钥和一个私钥,用于增强 SSH 登录的安全性,避免使用明文密码登录服务器。以下是关于 ssh-keygen 的详细说明:

1. SSH 密钥对的作用

  • 公钥(Public Key) :可以公开分发给服务器或其他客户端。服务器会将公钥存储在用户的授权文件(如 ~/.ssh/authorized_keys)中。

  • 私钥(Private Key):必须严格保密,只有用户自己保存。私钥用于解密服务器发送的加密信息,从而验证用户的身份。

  • 工作原理

    • 当客户端尝试通过 SSH 登录服务器时,服务器会向客户端发送一个加密的挑战信息。

    • 客户端使用私钥解密该挑战信息,并将解密后的结果发送回服务器。

    • 服务器验证解密结果是否正确,从而确认客户端的身份。

2. 使用 ssh-keygen 生成密钥对

基本命令

bash复制

复制代码
ssh-keygen
  • 默认行为

    • 默认情况下,ssh-keygen 会生成一个 2048 位的 RSA 密钥对。

    • 公钥保存在 ~/.ssh/id_rsa.pub 文件中。

    • 私钥保存在 ~/.ssh/id_rsa 文件中。

常用选项
  • 指定密钥类型

    • -t:指定密钥类型,如 rsadsaecdsaed25519 等。

      • RSA:最常用的密钥类型,推荐使用 2048 位或更高。

      • Ed25519:一种较新的密钥类型,安全性更高,推荐使用。

      • 示例:

        bash复制

        复制代码
        ssh-keygen -t rsa -b 2048
        ssh-keygen -t ed25519
  • 指定文件名

    • -f:指定密钥文件的保存路径。

      • 示例:

        bash复制

        复制代码
        ssh-keygen -t rsa -b 2048 -f ~/.ssh/my_custom_key

        这会生成 ~/.ssh/my_custom_key(私钥)和 ~/.ssh/my_custom_key.pub(公钥)。

  • 设置密码(可选)

    • 在生成密钥对时,系统会提示用户输入一个密码(passphrase)。如果设置了密码,每次使用私钥时都需要输入该密码,从而增加安全性。

    • 如果不输入密码,直接按回车键,则私钥无需密码即可使用。

3. 将公钥添加到服务器

生成密钥对后,需要将公钥添加到目标服务器的 ~/.ssh/authorized_keys 文件中,以便使用密钥登录。

方法 1:手动复制
  1. 在本地机器上查看公钥内容:

    bash复制

    复制代码
    cat ~/.ssh/id_rsa.pub
  2. 将公钥内容复制到服务器的 ~/.ssh/authorized_keys 文件中:

    bash复制

    复制代码
    ssh user@server
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    echo "your_public_key_content" >> ~/.ssh/authorized_keys
    chmod 600 ~/.ssh/authorized_keys
方法 2:使用 ssh-copy-id

ssh-copy-id 是一个方便的工具,可以自动将公钥复制到服务器的 ~/.ssh/authorized_keys 文件中。

bash复制

复制代码
ssh-copy-id user@server
  • 运行该命令时,系统会提示输入服务器的密码。输入密码后,公钥将自动添加到服务器。

4. 使用密钥登录服务器

完成上述步骤后,可以使用密钥登录服务器:

bash复制

复制代码
ssh -i ~/.ssh/my_custom_key user@server
  • -i:指定私钥文件路径。

  • 如果私钥文件是默认路径(如 ~/.ssh/id_rsa),则无需指定 -i 参数。

5. 注意事项

  • 保护私钥 :私钥文件(如 ~/.ssh/id_rsa)必须严格保密,建议设置文件权限为 600

    bash复制

    复制代码
    chmod 600 ~/.ssh/id_rsa
  • 备份密钥:建议将私钥文件备份到安全的地方,以防丢失。

  • 密钥类型选择 :推荐使用 ed25519 或高位数的 RSA 密钥,以确保安全性。

通过使用 ssh-keygen 生成密钥对并配置密钥登录,可以显著提高 SSH 登录的安全性,避免使用明文密码带来的风险。

相关推荐
QQ2740287566 分钟前
BlockMesh Ai项目 监控节点部署教程
运维·服务器·web3
亚林瓜子11 分钟前
Spring集成Redis中禁用主机名DNS检测
redis·spring·ssh
南棱笑笑生1 小时前
20250512给NanoPi NEO core开发板在Ubuntu core20.04系统更新boot.img
linux·运维·ubuntu
小锋学长生活大爆炸1 小时前
【教程】Docker更换存储位置
运维·docker·容器
愚润求学2 小时前
【Linux】动静态库链接原理
linux·运维·服务器·开发语言·笔记
云攀登者-望正茂2 小时前
无缝部署您的应用程序:将 Jenkins Pipelines 与 ArgoCD 集成
运维·jenkins·argocd
勤不了一点3 小时前
小白上手RPM包制作
linux·运维·服务器·软件工程
麦a~M了M4 小时前
ansible
linux·运维·ansible
2501_906314325 小时前
MCP-RAG 服务器:完整设置和使用指南
运维·服务器
QQ_4376643145 小时前
Linux下可执行程序的生成和运行详解(编译链接汇编图解)
linux·运维·c语言·汇编·caffe