The other day I was trying to push a gem to a private gem repository
on Nexus Repository Manager. I followed official documentation,
but I kept getting an Unauthorized
exception:
$ gem nexus my.gem
Uploading 1 gem to Nexus...
Unauthorized
We have User Tokens authorization enabled in our Nexus configuration. But documentation was
completely lacking any information on how to configure nexus-gem
to work with User Tokens.
After some digging I found that nexus-gem
has a config file located
at ~/.gem/nexus
, which looked like this:
---
:url: https://nexus.site.com/repository/gems
:authorization: Basic aSBsb3ZlIHBvdGF0b2Vz=
I think the file was generated when I was attempting to do:
gem nexus --url https://nexus.site.com/repository/gems \
--credential "account:password" my.gem
The solution was to replace :authorization
token generated from your
username:password pair with User Token, which you can find at:
https://nexus.site.com/#user/usertoken
Click Access user token
button, copy the code just under the line:
Use the following for a base64 representation of “user:password”
and paste it inside ~/.gem/nexus
file:
---
:url: https://nexus.site.com/repository/gems
:authorization: Basic <YOUR USER TOKEN>=
And that’s it! Now you should be able to push gems to your Nexus.