当前位置: 首页 > ai >正文

SSH秘钥管理指南

SSH秘钥管理指南

    • 1. 生成 SSH 密钥对(Windows/Linux/macOS)
      • 1.1 生成 RSA 密钥对(建议)
      • 1.2 可选:生成 Ed25519 密钥(更安全)
    • 2. 配置 SSH 免密登录 Linux 服务器
      • 2.1 将公钥上传到 Linux 服务器
        • 方法 1:使用 `ssh-copy-id`(推荐)
        • 方法 2:手动复制(适用于 Windows)
      • 2.2 测试 SSH 登录
      • 2.3 可选:禁用密码登录(增强安全)
    • 3. 使用 SSH 密钥连接 GitHub
      • 3.1 添加公钥到 GitHub
      • 3.2 测试 GitHub 连接
      • 3.3 使用 SSH 克隆仓库
    • 4. 高级配置(可选)
      • 4.1 管理多个 SSH 密钥
      • 4.2 密钥加密(增加密码保护)
    • 5. 常见问题排查
      • 5.1 权限问题
      • 5.2 连接失败
      • 5.3 GitHub 认证失败
    • 6. 总结

——本地生成密钥对、访问 Linux 服务器及 GitHub


1. 生成 SSH 密钥对(Windows/Linux/macOS)

1.1 生成 RSA 密钥对(建议)

ssh-keygen -t rsa -C "your_email@example.com"
  • -t rsa:指定密钥类型为 RSA。
  • -C "your_email@example.com":注释(可选,用于标识密钥)。

执行后:

  1. 默认保存路径:
    • Windows: C:\Users\<用户名>\.ssh\id_rsa
    • Linux/macOS: ~/.ssh/id_rsa
  2. 建议不设置密码(直接回车两次),否则每次使用 SSH 需输入密码。

在这里插入图片描述

1.2 可选:生成 Ed25519 密钥(更安全)

ssh-keygen -t ed25519 -C "your_email@example.com"
  • Ed25519 比 RSA 更安全且更快,但部分旧系统可能不支持。

2. 配置 SSH 免密登录 Linux 服务器

2.1 将公钥上传到 Linux 服务器

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

username:对应远程服务器的用户。

server_ip:对应远程服务器的IP地址。

ssh-copy-id -i ~/.ssh/id_rsa.pub username@server_ip

输入服务器密码后,公钥会自动添加到 ~/.ssh/authorized_keys

方法 2:手动复制(适用于 Windows)
  1. 查看公钥

    cat ~/.ssh/id_rsa.pub
    
  2. 登录服务器,将公钥追加到 authorized_keys

    mkdir -p ~/.ssh
    echo "粘贴你的公钥" >> ~/.ssh/authorized_keys
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    

2.2 测试 SSH 登录

username:对应远程服务器的用户。

server_ip:对应远程服务器的IP地址。

ssh username@server_ip

如果服务器使用的不是22端口,则可以使用 -p 端口

ssh username@server_ip -p 10010

如果配置正确,应直接登录,无需密码。


2.3 可选:禁用密码登录(增强安全)

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

修改:

PasswordAuthentication no
PubkeyAuthentication yes

重启 SSH 服务:

sudo systemctl restart sshd

3. 使用 SSH 密钥连接 GitHub

3.1 添加公钥到 GitHub

  1. 复制公钥

    cat ~/.ssh/id_rsa.pub
    
  2. 登录 GitHub → Settings → SSH and GPG keys → New SSH key

    • Title: 自定义名称(如 My Laptop
    • Key: 粘贴 id_rsa.pub 内容

3.2 测试 GitHub 连接

ssh -T git@github.com

成功会显示:

Hi username! You've successfully authenticated...

3.3 使用 SSH 克隆仓库

git clone git@github.com:username/repo.git

(替换 HTTPS 方式,避免每次输入密码)


4. 高级配置(可选)

4.1 管理多个 SSH 密钥

编辑 ~/.ssh/config

# GitHub
Host github.comHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_github# 公司服务器
Host company-serverHostName server_ipUser deployIdentityFile ~/.ssh/id_rsa_company
  • 使用方式

    ssh company-server  # 代替 ssh deploy@server_ip
    git clone git@github.com:user/repo.git  # 自动使用指定密钥
    

4.2 密钥加密(增加密码保护)

生成密钥时设置密码:

ssh-keygen -t rsa -C "your_email@example.com"

后续可使用 ssh-add 缓存密码(临时免输入):

eval $(ssh-agent)  # 启动 agent
ssh-add ~/.ssh/id_rsa  # 添加密钥(需输入密码)

5. 常见问题排查

5.1 权限问题

  • .ssh 目录权限必须为 700

    chmod 700 ~/.ssh
    
  • authorized_keys 权限必须为 600

    chmod 600 ~/.ssh/authorized_keys
    

5.2 连接失败

  • 检查 SSH 服务状态

    sudo systemctl status sshd
    
  • 查看详细错误

    ssh -v username@server_ip
    

5.3 GitHub 认证失败

  • 确认公钥已正确添加

  • 测试连接

    ssh -T git@github.com
    

6. 总结

场景操作
生成密钥对ssh-keygen -t rsa -b 4096
上传公钥到服务器ssh-copy-id 或手动复制
GitHub SSH 连接添加公钥到 GitHub → 测试 ssh -T
多密钥管理配置 ~/.ssh/config
增强安全性禁用密码登录 + 使用 Ed25519

通过 SSH 密钥认证,可实现:

  • 免密登录 Linux 服务器
  • 安全访问 Git Hub
  • 避免密码泄露风险

建议定期更换密钥(如每年一次),并妥善保管私钥!

http://www.xdnf.cn/news/3537.html

相关文章:

  • Nginx核心功能及正则表达
  • 第T8周:猫狗识别
  • 【免费】2010-2019年上市公司排污费数据
  • 纯原生Java实现:获取整个项目中指定接口所有的实现类
  • 每天一道算法题——推多米诺
  • 使用xlwings计算合并单元格的求和
  • Cesium 环境搭建
  • 组件通信-$attrs
  • 5个实用工具软件详细介绍
  • 多线程基础:线程创建、启动与生命周期管理
  • 【阿里云大模型高级工程师ACP学习笔记】2.9 大模型应用生产实践 (上篇)
  • ESP32 在Platform Arduino平台驱动外部PSAM,进行内存管理
  • 数字智慧方案5846丨智慧广场整体解决方案(91页PPT)(文末有下载方式)
  • mindyolo填坑
  • 应用接入Stripe支付实战【2025版+配置+服务端+客户端+生产级+架构图+代码】
  • 表管理(约束)实验
  • C语言与指针3——基本数据类型
  • Learning vtkjs之TubeFilter
  • TMI投稿指南(四):投稿相关网址
  • 【Linux】Linux基础命令
  • 27.电源和地的单点串并联接线隐患及对EMC的影响分析
  • 数字智慧方案6206丨智慧园区大数据整体解决方案(45页PPT)(文末有下载方式)
  • HDLBIT-程序(Procedures)
  • 【原创开发】无印去水印[特殊字符]短视频去水印工具[特殊字符]支持一键批量解析
  • CloudCompare 中的 KDTree详解
  • 设计模式简述(十六)门面模式
  • DeepSeek构建非农预测模型:量化关税滞后效应与非线性经济冲击传导
  • cPanel 的 Let’s Encrypt™ 插件
  • 平台介绍-开放API接口-鉴权
  • 【C到Java的深度跃迁:从指针到对象,从过程到生态】第五模块·生态征服篇 —— 第二十章 项目实战:从C系统到Java架构的蜕变