生成Ed25519密钥对并配置SSH快捷登录的完整指南

2025/3/18
本文详细介绍了如何生成Ed25519密钥对、上传公钥到服务器、配置SSH安全设置、设置本地SSH别名快捷登录,并提供故障排查和安全建议。

1. 生成Ed25519密钥对(本地操作)

生成密钥

ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/my_ed25519_key
  • 说明
    • -t ed25519:指定密钥类型为Ed25519。
    • -C "注释":可选注释,用于标识密钥用途(如邮箱)。
    • -f ~/.ssh/my_ed25519_key:指定密钥文件名(默认是id_ed25519,这里自定义为my_ed25519_key)。
  • 操作提示
    • 按回车保存到默认路径。
    • 输入密钥密码(可选但建议设置,如直接回车跳过)。

检查生成的密钥

ls -l ~/.ssh

应看到两个文件:

  • my_ed25519_key:私钥(权限必须为 600)。
  • my_ed25519_key.pub:公钥(可自由分发)。

2. 将公钥上传到服务器

方法一:使用 ssh-copy-id(需服务器允许密码登录)

ssh-copy-id -i ~/.ssh/my_ed25519_key.pub -p 22 user@server_ip
  • 参数解释
    • -i:指定公钥路径。
    • -p 22:如果服务器SSH端口不是默认的22,替换为实际端口(如8022)。
  • 输入服务器用户密码完成上传。

方法二:手动上传(更安全)

  1. 复制公钥内容
    cat ~/.ssh/my_ed25519_key.pub
    
  2. 登录服务器并写入公钥
    ssh -p 22 user@server_ip  # 替换端口和用户
    mkdir -p ~/.ssh
    echo "粘贴公钥内容" >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    exit
    

3. 配置服务器SSH安全设置(服务器操作)

  1. 编辑SSH配置文件
    sudo nano /etc/ssh/sshd_config
    
  2. 修改以下参数
    PubkeyAuthentication yes     # 启用密钥登录
    PasswordAuthentication no    # 禁用密码登录(确保密钥可用后再禁用!)
    PermitRootLogin no           # 禁止root直接登录(可选)
    Port 55522                   # 修改默认SSH端口(可选,需同步防火墙)
    
  3. 重启SSH服务
    sudo systemctl restart sshd
    

4. 配置本地SSH别名快捷登录(本地操作)

  1. 编辑本地SSH配置文件
    nano ~/.ssh/config
    
  2. 添加以下配置(根据实际参数修改):
    Host server1                  # 自定义别名(如 myserver、aws等)
        HostName 123.45.67.89     # 服务器IP或域名
        User ubuntu               # 登录用户名(如 root、ec2-user)
        Port 55522                # SSH端口(默认22)
        IdentityFile ~/.ssh/my_ed25519_key  # 私钥路径
        IdentitiesOnly yes        # 强制使用指定密钥
    
  3. 保存并设置权限
    chmod 600 ~/.ssh/config
    

5. 测试快捷登录

ssh server1
  • 如果私钥有密码,首次登录需输入密钥密码。
  • 成功登录即表示配置完成!

6. 其他实用技巧

使用 ssh-agent 管理密钥密码

eval $(ssh-agent)         # 启动ssh-agent
ssh-add ~/.ssh/my_ed25519_key  # 添加私钥到缓存(需输入一次密码)

之后使用 ssh server1 无需重复输入密码。

使用别名操作文件传输

scp file.txt server1:/path/      # 上传文件
rsync -avz folder/ server1:/path/  # 同步文件夹

多服务器配置示例

Host server1
    HostName 192.168.1.100
    User alice
    Port 22
    IdentityFile ~/.ssh/key1

Host server2
    HostName example.com
    User bob
    Port 55522
    IdentityFile ~/.ssh/key2

故障排查

  1. 权限问题
    chmod 600 ~/.ssh/my_ed25519_key   # 本地私钥权限
    chmod 700 ~/.ssh                  # 本地.ssh目录权限
    
  2. 连接失败
    • 检查服务器防火墙是否开放端口:
      sudo ufw allow 55522  # 若使用UFW
      
    • 查看SSH日志:
      tail -f /var/log/auth.log  # Linux服务器
      
  3. 调试SSH连接
    ssh -v server1  # 显示详细连接过程
    

安全建议

  1. 禁用密码登录:确保服务器已设置 PasswordAuthentication no
  2. 定期更换密钥:每3-6个月生成新密钥对。
  3. 备份私钥:将私钥存储在加密的USB或密码管理器中。

按照以上步骤,即可实现从生成Ed25519密钥到一键快捷登录的全部流程!

标签:Linux
上次更新:

相关文章

配置 Redis 服务器在系统启动时自动启动的完整指南

本文详细介绍了如何在不同 Linux 发行版中配置 Redis 服务器以在系统启动时自动启动,包括使用 Systemd 和 init.d 脚本的步骤。

·DevOps

生成Ed25519密钥对并配置SSH快捷登录的完整指南

本文详细介绍了如何生成Ed25519密钥对、上传公钥到服务器、配置SSH安全设置、设置本地SSH别名快捷登录,并提供故障排查和安全建议。

·DevOps

TCP快速打开(TFO)配置与工作机制详解 | 网络性能优化指南

本文详细介绍了TCP快速打开(TFO)的原理、工作机制、优势、局限性以及如何在Linux和Nginx中启用TFO,帮助提升网络应用的性能。

·后端开发

Turborepo 使用指南:提升 JavaScript 和 TypeScript 项目的构建效率

Turborepo 是一个专为 JavaScript 和 TypeScript 项目设计的高性能构建系统,特别适合管理多包(monorepo)项目。本文详细介绍了 Turborepo 的安装、配置、任务执行、缓存机制以及与 CI/CD 的集成,帮助开发者提升开发效率和构建速度。

·DevOps

Unix/Linux系统输出重定向与管道的解析及应用

介绍Unix/Linux系统中输出重定向和管道这两个强大工具,包括对它们的理解、应用场景以及结合使用的方法,能帮助更高效处理命令输出和数据流,实现多种任务提高工作效率。

·DevOps

Vim常用命令全解析

本文详细介绍了Vim在命令行环境下的常用命令,包括基本移动、插入编辑、复制粘贴剪切、搜索替换、保存退出、多窗口分屏以及其他常用命令等,帮助读者掌握基础命令以提高编辑效率。

·DevOps

Linux系统文件操作与查看的命令技巧

介绍Linux系统中文件操作和文件查看的常用命令及技巧,包括创建、复制、移动、删除文件和目录,查看文件内容、类型、权限等,还有压缩解压、权限管理、文件链接等相关内容及示例。

·DevOps

Linux系统常用用户管理命令介绍

本文详细介绍了Linux系统中众多常用的用户管理命令及其用途,包括添加、设置密码、修改属性、删除用户等各类操作,涵盖了用户管理的大部分常见场景。

·DevOps

Shell脚本示例及相关知识

本文介绍了Shell作为操作系统与用户的接口,常见的Shell种类,如Bash、Zsh等,还列举了常见的Shell命令,包括文件与目录操作、系统信息管理等多方面,讲述了Shell脚本编程的元素,并给出了示例脚本,最后总结了Shell在系统管理和自动化任务中的重要性。

·DevOps

进程和线程的全面解析及前端应用

本文详细介绍了进程和线程在操作系统中的定义、特点、区别,阐述了它们各自的应用场景,还讲述了在前端开发中通过Web Workers实现多线程编程的相关内容。

·DevOps