Nexus Repository OSS 3.63.0-01版本APT托管仓库GPG签名及401未授权问题求助
Nexus Repository OSS 3.63.0-01版本APT托管仓库GPG签名及401未授权问题求助
嗨,我来帮你梳理下你遇到的这两个问题,咱们一步步来排查解决:
一、先解决401 Unauthorized(未授权)问题
这个错误说明你的apt客户端访问Nexus仓库时没有提供正确的认证信息,或者Nexus侧没有允许访问:
- 先检查客户端的apt源配置:打开
/etc/apt/sources.list或者/etc/apt/sources.list.d/下的对应源文件,确认地址是否包含正确的用户名和密码(格式应该是http://<用户名>:<密码>@<你的Nexus仓库地址>/dists/jammy/main);如果不想把密码明文写在源文件里,可以在/etc/apt/apt.conf中配置Acquire::http::"<你的仓库地址>":::Proxy-Authentication "Basic <base64编码的用户名:密码>"。 - 再检查Nexus仓库的权限设置:登录Nexus后台,找到你的APT托管仓库,进入“Permissions”标签页,看看是否开启了“Allow anonymous access”;如果没开启,要确保你用来访问的Nexus用户拥有该仓库的
nx-repository-view-apt-*-read权限。 - 最后排查网络层面:如果Nexus前面有反向代理(比如Nginx)或者防火墙,要确认代理规则有没有正确转发请求头,有没有拦截认证相关的字段。
二、解决仓库未签名的问题
这个错误是因为你的APT仓库没有配置GPG签名,或者元数据生成有问题:
- 第一步:配置Nexus的GPG签名。登录Nexus后台,先在“Security”->“GPG Keys”里生成或者导入一对GPG密钥对;然后找到你的APT托管仓库,进入“Configuration”标签页,找到“GPG Signing”部分,勾选“Enable GPG Signing”,选择你刚才生成/导入的密钥,保存配置。
- 第二步:重建仓库元数据。你提到看不到metadata目录,这是正常的——Nexus 3.x的web界面不会展示底层的文件目录结构,你需要到Nexus的本地存储路径操作:找到Nexus的数据存储目录(默认是
sonatype-work/nexus3/blobs下对应你APT仓库的存储桶),删除dists/jammy相关的元数据文件夹;然后回到Nexus后台,在仓库列表里找到这个仓库,点击右侧的“Repair”按钮,选择“Rebuild repository metadata”,等待元数据重新生成。 - 第三步:客户端导入GPG公钥。把Nexus里的GPG公钥导出,然后在Ubuntu客户端上导入到信任列表:如果是Ubuntu 22.04(jammy)及以上版本,推荐用
curl <你的Nexus公钥地址> | gpg --dearmor | sudo tee /usr/share/keyrings/nexus-apt.gpg,然后在源文件里加上signed-by=/usr/share/keyrings/nexus-apt.gpg参数;旧版本可以用apt-key add命令导入。
三、关于版本的建议
3.63.0-01这个版本是比较稳定的版本,暂时不需要急着升级。建议先把上面的配置都排查一遍,确认所有步骤都做对了;如果还是存在问题,再考虑升级到最新的Nexus Repository OSS稳定版(比如最新的3.68.x系列),后续版本修复了一些APT仓库元数据生成和认证相关的小bug。
备注:内容来源于stack exchange,提问作者mik42
相关产品推荐
相关产品推荐

