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_ed25519 和 id_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:
- 右上角头像 → Settings
- 左侧 → SSH and GPG keys
- 点击 New SSH key
- Title 随便填,比如
ubuntu-SYS-420GP-TNR - Key 里粘贴刚才复制的内容
- 点击 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-ix 对 xi-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 过期、权限范围、密码认证这些问题困扰。

浙公网安备 33010602011771号