为 Github 创建本地 .ssh 关联 (RSA 以支持老系统)

生成 SSH 密钥对

打开终端(Linux/macOS)或 Git Bash(Windows),运行以下命令生成 RSA 密钥对:

bash 复制代码
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsa 指定密钥类型为 RSA。
  • -b 4096 设置密钥长度为 4096 位(兼容老系统可降低至 2048)。
  • -C 添加注释(通常为邮箱)。

按提示选择密钥存储路径(默认 ~/.ssh/id_rsa)和设置密码(可选)。

将 id_rsa 添加到 SSH Agent 的方法

检查 SSH Agent 是否运行

运行以下命令确认 SSH Agent 是否已在后台运行:

bash 复制代码
eval "$(ssh-agent -s)"

若输出类似 Agent pid 12345 表示 Agent 正在运行。

添加私钥到 SSH Agent

使用 ssh-add 命令添加私钥文件(默认路径为 ~/.ssh/id_rsa):

bash 复制代码
ssh-add ~/.ssh/id_rsa

若私钥有密码保护,会提示输入密码。

验证添加结果

通过以下命令查看已加载的密钥列表:

bash 复制代码
ssh-add -l

输出应显示密钥指纹和对应的注释(如 id_rsa)。

将公钥添加到 GitHub

复制公钥内容(默认路径 ~/.ssh/id_rsa.pub):

bash 复制代码
cat ~/.ssh/id_rsa.pub

登录 GitHub,进入 Settings → SSH and GPG keys → New SSH key,粘贴公钥并保存。

测试 SSH 连接

运行以下命令验证配置:

bash 复制代码
ssh -T git@github.com

若提示 You've successfully authenticated 则关联成功。

配置 Git 使用 SSH

若之前使用 HTTPS 克隆仓库,需更新远程 URL:

bash 复制代码
git remote set-url origin git@github.com:username/repo.git

替换 username/repo 为实际仓库路径。

解决兼容性问题

若遇到老系统不支持新格式,可改用传统 PEM 格式生成密钥:

bash 复制代码
ssh-keygen -m PEM -t rsa -b 2048
  • -m PEM 强制使用 PEM 格式(兼容旧版 OpenSSH)。

多密钥管理

若需为不同账户配置多密钥,编辑 ~/.ssh/config 文件:

bash 复制代码
Host github.com-user1
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_rsa_user1

克隆时使用别名:

bash 复制代码
git clone git@github.com-user1:username/repo.git

解决常见问题

密钥权限问题

确保私钥文件权限为 600,目录权限为 700

bash 复制代码
chmod 600 ~/.ssh/id_rsa
chmod 700 ~/.ssh

自动启动 SSH Agent

~/.bashrc~/.zshrc 中添加以下内容实现登录时自动启动 Agent:

bash 复制代码
if [ -z "$SSH_AUTH_SOCK" ]; then
   eval "$(ssh-agent -s)"
   ssh-add ~/.ssh/id_rsa
fi

指定其他密钥路径

若密钥不在默认路径,需指定完整路径:

bash 复制代码
ssh-add /path/to/custom_key
相关推荐
是Dream呀1 小时前
自动化打造信息影响力:用 Web Unlocker 和 n8n 打造你的自动化资讯系统
运维·前端·爬虫·自动化
中草药z1 小时前
【Linux】拆解 Linux 容器化核心:Namespace 隔离 + cgroups 资源控制,附 LXC 容器生命周期实战
运维·docker·容器·虚拟化·namespace·lxc·cgroups
草莓熊Lotso1 小时前
Linux 程序地址空间深度解析:虚拟地址背后的真相
java·linux·运维·服务器·开发语言·c++·人工智能
Jinkxs1 小时前
【Linux】零基础入门:一篇吃透操作系统核心概念
linux·运维·服务器·网络·操作系统
懒神降世1 小时前
基于iVentoy的PXE服务器的部署实战指南
运维·服务器·开发语言·云原生·vmware·openeuler·iventoy
No8g攻城狮2 小时前
【Nginx】Nginx实现动态路由映射
运维·nginx
江畔何人初2 小时前
LVM中物理卷、物理区块、卷组、逻辑卷的概念以及它们之间的关系
linux·运维·云原生·容器·kubernetes
凯子坚持 c2 小时前
亮数据MCP结合Dify:构建自动化视频数据抓取与智能分析工作流的深度实践
运维·eureka·自动化
nxbsc_wanglc3 小时前
Linux安装redis
linux·运维·redis