How to create a user in jenkins? - jenkins

I just installed Jenkins in my machine running Ubuntu.
But when I access http://localhost:8080/ jenkins asks me for my username and password... but I have no idea what they are!
How can I log in Jenkins? (Sorry for the noob question, first time using Jenkins)
Any help is welcome!
Edit: So far I got this:
I can remove security by changing the config.xml setting
<useSecurity>true</useSecurity>
to
<useSecurity>false</useSecurity>
And now I can access my Jenkins... But I still dont know how to create a user =/

in jenkins go to Manage Jenkins > Configure Global Security and select the "Enable Security" check box.
select "Jenkins Own User Database" for the security realm and then select "Logged in Users can do anything" or a matrix based strategy (If you have multiple users with different permissions) for the Authorization.

Once you log in Jenkins as admin, Manage Jenkins > Configure Global Security and select the "Enable Security" check box. select "Jenkins Own User Database" for the security realm under access control and then select "Logged in Users can do anything" under Authorization and Save it.
click on Manage jenkins>>Manage User >> Create User
Complete the details.

Jenkins asks me for my username and password... but I have no idea what they are!
It depends how you configured Jenkins Access Control/Security Realm in your Configure Global Security page which determines the user authentication method, whether to use Jenkins own independent user database or external database (such as LDAP, Active Directory, Unix NIS, etc.).
If its using its own database, you can try to decrypt Jenkins passwords from credentials.xml. Otherwise disable useSecurity in your config.xml file, restart Jenkins and follow the steps. You should be asked to provide the initial password from the initialAdminPassword file (if you don't, make sure you've changed the right file and restarted Jenkins correctly).
To create user, you need to go to select your authentication method in Configure Global Security and create user either externally or if you've selected Jenkins’ own user database and tick Allow users to sign up, then hit Save button which would allow you to create user from the Jenkins interface.

Login to your Jenkins server via web URL. (http://jenkins_ip or jenkins_url:8080)
Jenkins >> Manage Jenkins >> Manage Users >> Create User >> Provide the username, password, email & click on Create User.
To edit or reset or modify the password of the Jenkins' own user database users,
Jenkins >> Manage Jenkins >> Manage Users >> Click the user-id from the existing user list >> Configure >> Save

You should find a file in secrets folder called initialAdminPassword with the info

Steps to create a new user
Login into Jenkins
Go to Manage Jenkins
Go to Create Users
Enter all the details – Username, Password, Confirm Pwd, FullName, Email
Select Create User

This LINK has detailed steps on how to create Jenkins user.
Here is the summary:
After setting
<useSecurity>false</useSecurity>
Restart Jenkins:
sudo systemctl restart jenkins
Click on People on the left-hand navigation menu.
Click on the Admin. (Skip and move on to step 4 if you don't have any user).
Delete the user account.
Navigate to Jenkins / Manage Jenkins.
Click on Configure Global Security
Check the Enable Security check box. (If you don't have this item, skip and move on to next and you will able to create/add user)
Under Security Realm, select Jenkins’ own user database
In the Authorization section, select Logged-in users can do
anything.
Unselect Allow anonymous read access.
Click Save to save your changes.

By default Jenkins uses it's own database for user management.
Go to People on Jenkins dashboard to see Users that you have, if you are not able to find an option to add user there, don't be disheartened, read on.
Go to Manage Jenkins and scroll down to bottom, second last option should be Manage Users.
By default every logged-in user can do anything, to change this, go to Manage Jenkins -> Configure Global Security -> Access Control -> Authorization -> Matrix-based security
AT THIS POINT IF YOU DON'T KNOW WHAT TO DO, PLEASE DON'T MAKE ANY CHANGES. DON'T SAVE OR APPLY.

Related

How to remove Credentials section from Jenkins homepage?

I currently have the Jenkins Credentials plugin installed on an apache webserver. The global jenkins security is set to "logged in users can do everything" and anonymous users can only read.
I want to remove this section from the homepage on the left side:
How can I achieve this?
Under 'Configure Global Security', try changing from 'Logged in users can do anything' to 'Matrix-based security' or 'Project-based Matrix Authorization Strategy', and you should see a table that allows you to disable the credentials options for authenticated users.
https://jenkins.io/doc/book/using/using-credentials/#configuring-credentials
Although if you're an admin I think it shows up regardless.

"Trigger builds remotely" does not appear after installing Build Token Root Plugin in Jenkins

I have installed Build Token Root Plugin (Version 1.2) in Jenkins. But the "Trigger builds remotely" options doesn't appear.
The end goal is to trigger Jenkins from SlackBot. I followed this tutorial.
I must be doing something very silly. Please help.
Stackoverflow articles referred with no vain
Hudson - missing Trigger builds remotely option
Triggering builds remotely in Jenkins
You need to read it: Quick and Simple Security
Enable the security setting, go to http://yourhost/jenkins/configureSecurity and select enable security, then choose Delegate to servlet container for security realm and Legacy mode for authorization strategy. Or, you may click on the Manage Jenkins link on the left side of the main Jenkins dashboard page to get to the configuration page, then click Configure Global Security.
To log into Jenkins go to http://yourhost/jenkins/loginEntry, or click on the login link located on the top right hand corner of any Jenkins Dashboard page.
This will bring you to the Login page. Enter the user name and password, and click on the Submit button. This will take you back to the main Jenkins dashboard. You will now see the Manage Jenkins link on the left side of the page.
To logout simply click the logout link located on the top right hand corner of any Jenkins dashboard page.
Anonymous read access required
The preceding instructions require that anonymous users have read access to Jenkins. If you disable overall read access for anonymous users, the Build Token Root Plugin allows use of tokens.
Be carreful while applying the accepted answer. It locked me out of Jenkins.
Here is an alternative:
* Security Realm: Jenkins' own user database (uncheck Allow users to sign up)
* Authorization: Logged-in users can do anything
The “Trigger builds remotely” then appears.

Securing builds on Hudson

We have an enterprise Hudson setup wherein I want to restrict the ability to trigger new builds to logged in users only. I do not have access to "manage Hudson" but I do have enough karma to create/edit jobs.
I tried adding "users" to the "job-based security" list and unchecked build rights from "Anonymous", but that doesn't seem to work for me. Is there a catch-all group for logged in users?
A "catch all" group for logged in users is authenticated.
However if authenticated have build permissions on global configuration (through manage Hudson), unchecking them on per-job will not remove permissions. These are "allow" permissions and are cumulative, there are no "deny" permissions.
If you really want to restrict a job from being run by others, you can make a "password" type parameter in the job, and fail the job if that value is not something that's expected... but of course any admin with "configure" permission on your job could see it.

Jenkins security - hide all screens unless user is logged in

I don't know why "logged in users can do anything" means Jenkins will happily allow non-authenticated users to view project details and access artifacts... Regardless, I need to know how to get Jenkins to allow logged in users to to anything AND hide EVERYTHING for users who AREN'T logged in. Help please?
This can be done with the Role-Strategy plugin.
Install the plugin, add a new group called "Anonymous" and uncheck everything. Then you want to add another group called "authenticated" and check everything. Add your existing users to this group. Jenkins will immediately prompt you for a login this way.
You can use https://wiki.jenkins-ci.org/display/JENKINS/Role+Strategy+Plugin
it allows to specify to define roles and assign roles to users, users with no roles won't even see the jenkins ui.
Answer to an old question but I came searching here as I am trying to auto spin up a Jenkins instance on Docker and found the same issue.
Good chance this option wasn't available when the question was asked. As of this moment (v2.222.3 but not sure how far back), it turns out you can do this without installing any additional plugins.
Manually
Navigate to Global Security (Jenkins > Manage Jenkins > Global Security)
Update the Authorization section to "Logged-in users can do anything".
UNCHECK Allow anonymous read access
Any unauthenticated access will redirect to login now.
I would note that if you setup Jenkins through the setup wizard then anonymous read access is disabled by default. If you want this behaviour AND want to configure jenkins automatically, read on.
Automated with Docker
My situation is that I wanted to check out my repo, run my compose file and have all my config/users/plugins etc ready to go. Great post here with more detail if interested.
In a nutshell:
Dockerfile
FROM jenkins/jenkins:lts-alpine
# Disable setup wizard since security.groovy creates our user
ENV JAVA_OPTS="-Djenkins.install.runSetupWizard=false"
COPY security.groovy /usr/share/jenkins/ref/init.groovy.d/security.groovy
security.groovy
#!groovy
import jenkins.model.*
import hudson.security.*
def instance = Jenkins.getInstance()
// Create Admin User
def hudsonRealm = new HudsonPrivateSecurityRealm(false)
hudsonRealm.createAccount("admin", "admin") // Dont do this. This is bad
instance.setSecurityRealm(hudsonRealm)
// Set Auth to Full Control Once Logged In and prevent read-only access
def strategy = new FullControlOnceLoggedInAuthorizationStrategy()
strategy.setAllowAnonymousRead(false)
instance.setAuthorizationStrategy(strategy)
instance.save()
In particular, strategy.setAllowAnonymousRead(false) is what's needed
Additionally, if you use GitHub as your version control system -- you can use the GitHub OAuth plugin. Once the "Anonymous" reach your page, they will be redirected to GitHub automatically.

How can I add a username and password to Jenkins?

When I go to mydomain.example:8080 there is no authorization mechanism by default. I have had look at the configuration area but cannot find anywhere to add a basic username and password
Go to Manage Jenkins > Configure Global Security and select the Enable Security checkbox.
For the basic username/password authentication, I would recommend selecting Jenkins Own User Database for the security realm and then selecting Logged in Users can do anything or a matrix based strategy (in case when you have multiple users with different permissions) for the Authorization.
Assuming you have Manage Jenkins > Configure Global Security > Enable Security and Jenkins Own User Database checked you would go to:
Manage Jenkins > Manage Users > Create User
Try deleting the .jenkins folder from your system which is located ate the below path.
C:\Users\"Your PC Name"\.jenkins
Now download a fresh and a stable version of .war file from official website of jenkins. For eg. 2.1 and follow the steps to install.
You will be able to do via this method
You need to Enable security and set the security realm on the Configure Global Security page (see: Standard Security Setup) and choose the appropriate Authorization method (Security Realm).
Depending on your selection, create the user using appropriate method. Recommended method is to select Jenkins’ own user database and tick Allow users to sign up, hit Save button, then you should be able to create user from the Jenkins interface. Otherwise if you've chosen external database, you need to create the user there (e.g. if it's Unix database, use credentials of existing Linux/Unix users or create a standard user using shell interface).
See also: Creating user in Jenkins via API
If installed as an admin, use:
uname - admin
pw - the passkey that was generated during installation

Resources