You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH连接Ubuntu笔记本操作Git提示Permission denied如何解决

核心根因

你定位到的两个问题直接导致了权限报错:

  • 从Windows SSH远程接入Ubuntu时,目标环境的ssh-agent未正常启动,无法提供密钥认证服务
  • SSH默认仅自动加载~/.ssh目录下前缀为id_的私钥,你用于Gitea认证的私钥前缀为git_,未被纳入自动加载范围

另外需要注意:你SSH登录到Ubuntu后执行Git操作,使用的是Ubuntu本地的SSH认证环境,和你PC本身的SSH密钥无关,因此之前把PC密钥添加到Git授权列表的操作无法解决问题。

永久解决方案

推荐优先用第一种方案,无需依赖ssh-agent,稳定性最高:

方案1:配置SSH配置文件指定Gitea专属密钥

直接在Ubuntu的当前用户目录下编辑SSH配置文件,强制访问Gitea时使用指定的私钥:

  1. 打开配置文件:nano ~/.ssh/config
  2. 添加如下配置(替换占位符为你实际的信息):
Host 你公司Gitea的实际域名 # 例如gitea.company.com
  HostName 你公司Gitea的实际域名
  User git # Gitea SSH操作默认统一使用git用户,无需修改
  IdentityFile ~/.ssh/git_xxx # 替换为你实际的git前缀私钥完整路径
  IdentitiesOnly yes
  1. 保存退出后,给配置文件设置正确权限:chmod 600 ~/.ssh/config

该配置对本地终端、远程SSH终端均生效,Git操作、pipenv拉取Git依赖时都会自动匹配使用指定密钥,无需额外操作。

方案2:配置ssh-agent自动启动+加载自定义前缀密钥

如果需要使用ssh-agent统一管理密钥,可按如下配置:

  1. 编辑Ubuntu当前用户的shell配置文件(使用bash则改~/.bashrc,使用zsh则改~/.zshrc)
  2. 加入如下代码:
# 自动启动ssh-agent并加载git前缀密钥
if [ -z "$SSH_AUTH_SOCK" ]; then
  eval $(ssh-agent -s)
  # 自动加载所有git_前缀的私钥,可指定具体文件名
  ssh-add ~/.ssh/git_* 2>/dev/null
fi
  1. 保存退出后执行source ~/.bashrc(或对应zsh配置文件)立即生效

如果你的私钥设置了密码,不想每次登录都输入,可使用keychain工具实现密码一次输入长期有效:

  • 安装keychain:sudo apt update && sudo apt install -y keychain
  • 把上面shell配置文件里的代码替换为:
# keychain管理SSH密钥
/usr/bin/keychain --quiet ~/.ssh/git_xxx # 替换为你的私钥路径
source ~/.keychain/$HOSTNAME-sh
验证方法

配置完成后,在远程SSH终端执行命令测试:ssh -T git@你公司Gitea域名,如果返回Gitea的欢迎提示,说明认证配置成功,此时再执行git pull、pipenv install均可正常运行。

内容的提问来源于stack exchange,提问作者seseikelele

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:27:00