Cockpit on openSUSE: common problems and their fixes
Recognise the usual Cockpit problems on openSUSE by their symptom and fix them in a minute.
Part 5 of 5 in Cockpit on openSUSE. Last updated
In short: Root cannot log in by design; use your own user. The admin prompt wants root's password on openSUSE's default sudo policy. If cockpit.socket fails, read journalctl -u cockpit.socket: openSUSE's start check names leftover users or an outdated /etc/nsswitch.conf. Missing containers usually mean another user owns them or podman.socket is off. Unreachable pages are nearly always the firewalld zone. On Tumbleweed, update with sudo zypper dup in the terminal rather than trusting a one-click update.
Login refused
root: "Permission denied"
By design: /etc/cockpit/disallowed-users lists root. Log in as your
own user and switch on administrative access. Removing root from that file works, but then
every browser session is a root session.
A service user: "Wrong user name or password"
Users created only for containers often have no password, and Cockpit logs in with
passwords. Set one with sudo passwd apps, or manage that user's containers from
the Terminal page with sudo machinectl shell apps@.
Administrative access asks for the wrong password
Your own password fails at the "Limited access" prompt? openSUSE's default sudo policy asks for the target user's password, which is root's. Type root's password, or switch to the wheel policy so your own password works (needs root):
sudo zypper install sudo-policy-wheel-auth-self
sudo usermod -aG wheel alice # then log out of Cockpit and back in More background is in the sudo and SSH guide.
cockpit.socket does not start
systemctl status cockpit.socket
journalctl -u cockpit.socket -b # the reason is in here openSUSE's package runs a check before the socket starts, and its messages say what to fix:
- A leftover user or group such as
cockpit-wsinstance-socketexists from an older version. Current Cockpit creates these dynamically; remove the old one with theuserdelorgroupdelcommand the message names (needs root). - "/etc/nsswitch.conf is out of date": your file predates the switch to
systemd's user database. Compare it with the vendor version and add
systemdto thepasswdandgrouplines (needs root):diff /usr/etc/nsswitch.conf /etc/nsswitch.conf. - You enabled cockpit.service instead of the socket. Disable the service and
sudo systemctl enable --now cockpit.socket.
The journalctl command builder helps when the relevant lines drown in the rest of the log.
A real failure on a Tumbleweed laptop. The status says that the check failed:
$ systemctl status cockpit.socket --no-pager | head -8
× cockpit.socket - Cockpit Web Service Socket
Loaded: loaded (/usr/lib/systemd/system/cockpit.socket; enabled; preset: enabled)
Active: failed (Result: exit-code) since Fri 2026-09-25 12:52:18 CEST; 2 days ago
Invocation: 8d74fa1efb254f8885151354c964dfcf
Triggers: ● cockpit.service
Docs: man:cockpit-ws(8)
Listen: [::]:9090 (Stream)
Process: 1273 ExecStartPre=/usr/libexec/check_cockpit_users (code=exited, status=1/FAILURE) Real output on openSUSE Tumbleweed, Cockpit 365, 2026-09-28; user and host names and addresses redacted.
The check itself can run as a normal user, and it says what to do:
$ /usr/libexec/check_cockpit_users; echo "exit=$?"
user cockpit-wsinstance-socket exists, cockpit will fail to start up if this user exists, please run userdel cockpit-wsinstance-socket to resolve this
group cockpit-wsinstance-socket exists, cockpit will fail to start up if this group exists, please run groupdel cockpit-wsinstance-socket to resolve this
user cockpit-session-socket exists, cockpit will fail to start up if this user exists, please run userdel cockpit-session-socket to resolve this
group cockpit-session-socket exists, cockpit will fail to start up if this group exists, please run groupdel cockpit-session-socket to resolve this
user cockpit-systemd-service exists, cockpit will fail to start up if this group exists, please run userdel cockpit-systemd-service to resolve this
exit=1 Real output on openSUSE Tumbleweed, Cockpit 365, 2026-09-28; user and host names and addresses redacted.
Containers or services are missing
- Another user owns them. Cockpit shows root's containers and those of the user you logged in as, nothing else. Log in as the container user. Details are in the podman plugin guide.
- podman.socket is off for that user: the page offers a start button, or run
systemctl --user enable --now podman.socket. - Rootless services vanish after logout: lingering is off.
sudo loginctl enable-linger apps. - A quadlet is not in the service list: the generator rejected the file. Run the dry run from the quadlet basics guide.
The page does not load
systemctl is-active cockpit.socketon the server: must say active.curl -k https://localhost:9090/on the server: returns HTML if Cockpit works.sudo firewall-cmd --get-active-zones: which zone is your client's traffic in, and does that zone listcockpit?- If you bound the socket to a tunnel address, you can only reach it through the tunnel.
Step 3 is the culprit nine times out of ten. The WireGuard guide shows a zone setup that works.
Updates from Cockpit
The Software updates page (package cockpit-packagekit) is convenient on Leap for
patches. On Tumbleweed, run sudo zypper dup in the Terminal page instead: you
see exactly what the solver proposes, including removals, and can say no. The reasons are in
the zypper updates guide.
Frequently asked questions
Where do I find Cockpit's own error messages?
In the journal: journalctl -u cockpit.socket -u cockpit.service -b shows the web service since boot. Problems inside a page (for example the podman plugin) also appear in the browser's developer console.
Cockpit logs me out after a while. Can I change that?
Yes. Cockpit ends idle sessions after 15 minutes by default. Set IdleTimeout (in minutes, 0 to disable) in the [Session] section of /etc/cockpit/cockpit.conf; see the cockpit.conf man page.
Is the Terminal page a real root shell?
No, it is a shell as the user you logged in as. Use sudo inside it like in any SSH session; administrative access in the top bar does not change the terminal's user.