# Mpirun Authorization required, but no authorization protocol specified

**URL:** <https://forums.developer.nvidia.com/t/mpirun-authorization-required-but-no-authorization-protocol-specified/353580>\
**Category:** DGX Spark / GB10 Projects\
**Tags:** openmpi\
**Created:** [December 4, 2025, 5:13pm UTC](https://forums.developer.nvidia.com/t/mpirun-authorization-required-but-no-authorization-protocol-specified/353580 "2025-12-04T17:13:28Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![florin.andrei](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/florin.andrei/32/24219_2.png) [@florin.andrei](https://forums.developer.nvidia.com/u/florin.andrei)\
**Post date:** [December 4, 2025, 5:13pm UTC](https://forums.developer.nvidia.com/t/mpirun-authorization-required-but-no-authorization-protocol-specified/353580/1 "2025-12-04T17:13:28Z")

</div>

You may try to run `mpirun` between two systems, and you may get a warning like this:

```auto
florin@spark:~$ mpirun -H media uptime
Authorization required, but no authorization protocol specified

Authorization required, but no authorization protocol specified

 18:01:02 up 17:51, 3 users, load average: 0.00, 0.00, 0.00

```

This may happen when the target machine (or perhaps even both machines? not sure) is running X11, but you’re not actually using the GUI, you just run commands remotely on that machine (`mpirun` over `ssh`).

There are many opinions about this issue online. What it boils down to is this: `mpirun` invokes `orted` on the target machine, `orted` tries to run something related to X11 for some bizarre and unrelated reason (I think the package is misconfigured), and fails because it does not have the right permissions or settings.

You can read a long discussion on this topic on the Open MPI repo:

> <https://github.com/open-mpi/ompi/issues/13535>
>
> Thank you for taking the time to submit an issue!
> 
> \## Background information
> 
> \##…# What version of Open MPI are you using? (e.g., v4.1.6, v5.0.1, git branch name and hash, etc.)
> 
> 4.1.6
> 
> \### Describe how Open MPI was installed (e.g., from a source/distribution tarball, from a git clone, from an operating system distribution package, etc.)
> 
> It's the .deb packages that are installed on Ubuntu 24.04.3
> 
> \### If you are building/installing from a git clone, please copy-n-paste the output from \`git submodule status\`.
> 
> 
> 
> \### Please describe the system on which you are running
> 
> \* Operating system/version: Ubuntu 24.04.3
> \* Computer hardware: One self-built PC with an AMD CPU, and another is the NVIDIA DGX Spark
> \* Network type: Ethernet
> 
> \-----------------------------
> 
> \## Details of the problem
> 
> Please describe, in detail, the problem that you are having, including the behavior you expect to see, the actual behavior that you are seeing, steps to reproduce the problem, etc. It is most helpful if you can attach a small program that a developer can use to reproduce your problem.
> 
> Two systems, both run Ubuntu 24.04.3, on the same GigE network.
> 
> One is a homebuilt AMD CPU with an RTX 3090 GPU, called \`media\`, booted in graphical mode but no one is logged in locally.
> 
> The other is the NVIDIA DGX Spark (ARM CPU, Blackwell GPU), called \`spark\`, booted in text mode.
> 
> I'm ssh-ing into both machines from a MacBook Pro.
> 
> I cannot get rid of this error when trying to do \`mpirun\` from \`spark\` (text mode machine) to \`media\` (GUI machine):
> 
> \`\`\`
> florin@spark:~$ mpirun -H media uptime
> Authorization required, but no authorization protocol specified
> 
> Authorization required, but no authorization protocol specified
> 
> 18:01:02 up 17:51, 3 users, load average: 0.00, 0.00, 0.00
> \`\`\`
> 
> I've tried various workarounds I've seen online:
> 
> \`\`\`
> florin@spark:~$ HWLOC\_COMPONENTS=-gl mpirun -H media uptime
> Authorization required, but no authorization protocol specified
> 
> Authorization required, but no authorization protocol specified
> 
> 18:04:52 up 17:54, 3 users, load average: 0.06, 0.02, 0.00
> florin@spark:~$ mpirun --mca plm\_rsh\_args -x -H media uptime
> Authorization required, but no authorization protocol specified
> 
> Authorization required, but no authorization protocol specified
> 
> 18:05:02 up 17:55, 3 users, load average: 0.05, 0.02, 0.00
> florin@spark:~$ mpirun -H media --mca plm\_rsh\_agent "ssh -x" uptime
> Authorization required, but no authorization protocol specified
> 
> Authorization required, but no authorization protocol specified
> 
> 18:05:12 up 17:55, 3 users, load average: 0.04, 0.02, 0.00
> \`\`\`
> 
> It's very frustrating. I need \`spark\` to be the "base of operations", to launch most commands from here. It's \`spark\` that has the most RAM, so I don't always need \`media\`.
> 
> The other way around it works fine:
> 
> \`\`\`
> florin@media:~$ mpirun -H spark uptime
> 18:01:29 up 19:01, 2 users, load average: 0.32, 0.11, 0.05
> florin@media:~$ 
> \`\`\`
> 
> What else can I try?

Here’s the solution in a nutshell:

You can stop `orted` from doing that if you pass it this environment variable: `HWLOC_COMPONENTS=-gl`. You could try to export that variable in `~/.bashrc` on the target machine, but it will not work.

The reason is that Ubuntu has a guard at the top of `~/.bashrc` that prevents non-interactive tasks from using that file. Your task (launched by `mpirun` over the network to the target machine) is non-interactive.

The solution: export that variable at the top of `~/.bashrc` before the guard. It’s extremely unlikely it will harm anything this way, the name of that variable is quite unique. Make it look like this:

```auto
florin@media:~$ head -n 14 ~/.bashrc 
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# export this var for all sessions, before the interactive check
# it's only needed for mpirun / orted and should not harm anything else
# https://github.com/open-mpi/ompi/issues/13535
export HWLOC_COMPONENTS=-gl

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

```

You may add it to all machines that run `mpirun` but I think it’s only really needed on the target machines (`mpirun` reaches out to them over the network) and only if they still have the GUI enabled. YMMV

---

<div class="post-metadata">

**Author:** ![aniculescu](https://sea2.discourse-cdn.com/nvidia/user_avatar/forums.developer.nvidia.com/aniculescu/32/382649_2.png) [@aniculescu](https://forums.developer.nvidia.com/u/aniculescu)\
**Post date:** [December 29, 2025, 9:05pm UTC](https://forums.developer.nvidia.com/t/mpirun-authorization-required-but-no-authorization-protocol-specified/353580/2 "2025-12-29T21:05:08Z")

</div>

Moving to GB10 projects
