git ssh密匙使用

SSH 方式就是用密钥对代替 HTTPS 的用户名 + Token 来认证 GitHub。配置一次后,git push / git pull 都不再需要输入密码或 PAT,也不会遇到 “Password authentication is not supported” 这类问题。

你的仓库是:

https://github.com/xi-ix/HPO.git

对应的 SSH 地址是:

git@github.com:xi-ix/HPO.git

下面是完整配置流程。


1. 检查是否已有 SSH 密钥

ls -al ~/.ssh

如果看到 id_ed25519id_ed25519.pub,说明已经有密钥,可以跳过生成步骤。
如果没有,继续下一步。


2. 生成 SSH 密钥

推荐使用 ed25519:

ssh-keygen -t ed25519 -C "xi-ix@example.com"

一路按回车即可。
如果它询问 Enter passphrase,可以直接回车留空;也可以设置一个密码,以后使用密钥时需要输入这个密码。

生成后会有两个文件:

  • ~/.ssh/id_ed25519:私钥,绝对不能给别人
  • ~/.ssh/id_ed25519.pub:公钥,要添加到 GitHub

3. 启动 ssh-agent 并添加私钥

在 Ubuntu 服务器上通常需要手动加一下:

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519

如果提示 Could not open a connection to your authentication agent,说明 ssh-agent 没启动,先执行 eval "$(ssh-agent -s)"


4. 把公钥添加到 GitHub

查看并复制公钥内容:

cat ~/.ssh/id_ed25519.pub

复制输出的全部内容,以 ssh-ed25519 开头。

然后登录 GitHub:

  1. 右上角头像 → Settings
  2. 左侧 → SSH and GPG keys
  3. 点击 New SSH key
  4. Title 随便填,比如 ubuntu-SYS-420GP-TNR
  5. Key 里粘贴刚才复制的内容
  6. 点击 Add SSH key

5. 测试 SSH 是否成功

ssh -T git@github.com

第一次会问:

Are you sure you want to continue connecting (yes/no)?

输入 yes 回车。

如果成功,会显示类似:

Hi xi-ix! You've successfully authenticated, but GitHub does not provide shell access.

看到 Hi xi-ix! 就说明 SSH 认证成功了。


6. 把仓库远程地址改成 SSH

进入你的项目目录:

cd ~/HPO

查看当前远程地址:

git remote -v

如果显示的是 https://github.com/xi-ix/HPO.git,改成 SSH:

git remote set-url origin git@github.com:xi-ix/HPO.git

再确认一下:

git remote -v

应该显示:

origin  git@github.com:xi-ix/HPO.git (fetch)
origin  git@github.com:xi-ix/HPO.git (push)

7. 推送代码

git push -u origin main

这次不会再问 GitHub 用户名和密码,而是直接走 SSH 密钥认证。


常见问题

1. 提示 Permission denied (publickey)

说明 GitHub 没有识别到你的密钥。检查:

  • 公钥是否已经添加到 GitHub
  • 私钥是否已经 ssh-add
  • 测试命令是否显示 Hi xi-ix!

可以加 -v 查看详细过程:

ssh -vT git@github.com

2. 22 端口被封锁,连接超时

有些服务器或网络会封 SSH 的 22 端口。可以改用 GitHub 的 443 端口。

创建或编辑:

nano ~/.ssh/config

写入:

Host github.com
  HostName ssh.github.com
  Port 443
  User git

保存后测试:

ssh -T git@github.com

远程地址仍然可以保持:

git@github.com:xi-ix/HPO.git

3. Host key verification failed

清除旧的 GitHub 主机记录:

ssh-keygen -R github.com

然后重新 ssh -T git@github.com

4. SSH 成功但仍然 403

SSH 只解决“认证”问题,不解决“仓库权限”问题。
如果 GitHub 账号 xi-ixxi-ix/HPO 没有写权限,即使 SSH 成功,推送仍可能被拒绝。需要确认这个账号确实是仓库所有者,或有 Write 权限。

5. 多 GitHub 账号

如果你一台机器上有多个 GitHub 账号,可以用 ~/.ssh/config 配置别名:

Host github-xi-ix
  HostName github.com
  User git
  IdentityFile ~/.ssh/id_ed25519_xi-ix

然后远程地址改成:

git remote set-url origin git@github-xi-ix:xi-ix/HPO.git

最小操作流程

对你当前情况,直接执行:

ssh-keygen -t ed25519 -C "xi-ix@example.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub

把公钥添加到 GitHub 后:

ssh -T git@github.com
cd ~/HPO
git remote set-url origin git@github.com:xi-ix/HPO.git
git push -u origin main

SSH 配置好之后,基本就是一劳永逸,后续不会再被 PAT 过期、权限范围、密码认证这些问题困扰。

posted @ 2026-09-18 09:08  ROCOO  阅读(5)  评论(0)    收藏  举报