[GH-ISSUE #5872] bug: netbird ssh bypasses NetBird SSH and connects to plain SSH on port 22 in 0.68.1 #11222

Open
opened 2026-08-05 01:28:57 -04:00 by saavagebueno · 0 comments
Owner

Originally created by @renne on GitHub (Apr 13, 2026).
Original GitHub issue: https://github.com/netbirdio/netbird/issues/5872

Summary

netbird ssh <peer> does not use NetBird SSH on my setup with NetBird 0.68.1.

Instead of connecting to the NetBird SSH server on port 22022 with NetBird identity SSH (JWT/SSO), the client appears to fall back to plain SSH on port 22. The server-side NetBird daemon logs nothing during the attempt, which suggests the NetBird SSH server is never reached at all.

This is a high-severity regression for me because the feature is completely broken.

Expected behavior

netbird ssh <peer> should:

  1. Use NetBird identity SSH (JWT/SSO)
  2. Connect to the NetBird SSH server on port 22022
  3. Produce server-side NetBird logs visible in journalctl -u netbird

Actual behavior

netbird ssh <peer> appears to:

  1. Connect to port 22 using plain SSH
  2. Fail with:
    ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password]
    
  3. Produce zero server-side NetBird logs in journalctl -u netbird

Reproduction

Client command:

netbird ssh target-peer.example.internal -v

Client error:

Failed to connect to user@target-peer.example.internal:22
Error: ssh handshake failed: unable to authenticate,
attempted methods [none password], no supported methods remain

Server log during the attempt:

(EMPTY - nothing - zero lines)

Evidence that the server is ready

Server listening sockets

LISTEN 100.x.y.10:22022 -> netbird
LISTEN 0.0.0.0:22       -> sshd

So:

  • NetBird SSH server is listening on 100.x.y.10:22022
  • Normal SSH daemon is listening on 0.0.0.0:22

Server netbird status

SSH Server: Enabled
NetBird IP: 100.x.y.10/16
Management: Connected

Client netbird status

SSH Server: Enabled
NetBird IP: 100.x.y.20/16
Management: Connected

Evidence that policy is configured

Dashboard policy:

  • Protocol = NetBird SSH
  • Source group = Users (contains client peer client-peer)
  • Destination group = SSH servers (contains server peer target-peer)
  • SSH Access = Full Access
  • Policy = ENABLED

Environment

Management host

  • NetBird version: v0.68.1
  • Dashboard version: v2.36.0
  • Deployment type: self-hosted

Client peer

  • Hostname: client-peer.example.internal
  • NetBird IP: 100.x.y.20/16
  • OS: Ubuntu 24.04 inside WSL2 on Windows 11
  • Arch: linux/amd64
  • Daemon: 0.68.1
  • CLI: 0.68.1

Server peer

  • Hostname: target-peer.example.internal
  • NetBird IP: 100.x.y.10/16
  • OS: Linux VM on Proxmox VE
  • Arch: linux/amd64
  • Daemon: 0.68.1
  • CLI: 0.68.1

Why this seems different from #3832

Issue #3832 looks like a case where the NetBird SSH server is reached but authentication fails.

This bug appears different:

  • the client connects to :22
  • the NetBird SSH server on :22022 is never reached
  • the server writes zero NetBird logs during the attempt

So this looks more like the client is bypassing NetBird SSH entirely rather than a server-side auth problem.

Running:

netbird ssh configure

treats configure as a hostname and tries to connect to configure:22.

That suggests there is no local SSH config/configure subcommand in 0.68.1, and also reinforces the impression that the client is behaving like a plain SSH wrapper instead of using NetBird SSH.

Question

Is there a known regression in 0.68.1 where netbird ssh bypasses the NetBird SSH server completely, even when:

  • a NetBird SSH policy exists
  • the destination server has NetBird SSH enabled
  • port 22022 is open and listening
  • both peers are connected to management successfully?
Originally created by @renne on GitHub (Apr 13, 2026). Original GitHub issue: https://github.com/netbirdio/netbird/issues/5872 <!-- Saved: 2026-04-13 15:08 CEST --> ## Summary `netbird ssh <peer>` does not use NetBird SSH on my setup with NetBird `0.68.1`. Instead of connecting to the NetBird SSH server on port `22022` with NetBird identity SSH (JWT/SSO), the client appears to fall back to plain SSH on port `22`. The server-side NetBird daemon logs nothing during the attempt, which suggests the NetBird SSH server is never reached at all. This is a high-severity regression for me because the feature is completely broken. ## Expected behavior `netbird ssh <peer>` should: 1. Use NetBird identity SSH (JWT/SSO) 2. Connect to the NetBird SSH server on port `22022` 3. Produce server-side NetBird logs visible in `journalctl -u netbird` ## Actual behavior `netbird ssh <peer>` appears to: 1. Connect to port `22` using plain SSH 2. Fail with: ```text ssh: handshake failed: ssh: unable to authenticate, attempted methods [none password] ``` 3. Produce **zero** server-side NetBird logs in `journalctl -u netbird` ## Reproduction Client command: ```bash netbird ssh target-peer.example.internal -v ``` Client error: ```text Failed to connect to user@target-peer.example.internal:22 Error: ssh handshake failed: unable to authenticate, attempted methods [none password], no supported methods remain ``` Server log during the attempt: ```text (EMPTY - nothing - zero lines) ``` ## Evidence that the server is ready ### Server listening sockets ```text LISTEN 100.x.y.10:22022 -> netbird LISTEN 0.0.0.0:22 -> sshd ``` So: - NetBird SSH server is listening on `100.x.y.10:22022` - Normal SSH daemon is listening on `0.0.0.0:22` ### Server `netbird status` ```text SSH Server: Enabled NetBird IP: 100.x.y.10/16 Management: Connected ``` ### Client `netbird status` ```text SSH Server: Enabled NetBird IP: 100.x.y.20/16 Management: Connected ``` ## Evidence that policy is configured Dashboard policy: - Protocol = `NetBird SSH` - Source group = `Users` (contains client peer `client-peer`) - Destination group = `SSH servers` (contains server peer `target-peer`) - SSH Access = `Full Access` - Policy = `ENABLED` ## Environment ### Management host - NetBird version: `v0.68.1` - Dashboard version: `v2.36.0` - Deployment type: `self-hosted` ### Client peer - Hostname: `client-peer.example.internal` - NetBird IP: `100.x.y.20/16` - OS: `Ubuntu 24.04` inside `WSL2` on `Windows 11` - Arch: `linux/amd64` - Daemon: `0.68.1` - CLI: `0.68.1` ### Server peer - Hostname: `target-peer.example.internal` - NetBird IP: `100.x.y.10/16` - OS: `Linux VM on Proxmox VE` - Arch: `linux/amd64` - Daemon: `0.68.1` - CLI: `0.68.1` ## Why this seems different from #3832 Issue #3832 looks like a case where the NetBird SSH server is reached but authentication fails. This bug appears different: - the client connects to `:22` - the NetBird SSH server on `:22022` is never reached - the server writes **zero** NetBird logs during the attempt So this looks more like the client is bypassing NetBird SSH entirely rather than a server-side auth problem. ## Related observation Running: ```bash netbird ssh configure ``` treats `configure` as a hostname and tries to connect to `configure:22`. That suggests there is no local SSH config/configure subcommand in `0.68.1`, and also reinforces the impression that the client is behaving like a plain SSH wrapper instead of using NetBird SSH. ## Question Is there a known regression in `0.68.1` where `netbird ssh` bypasses the NetBird SSH server completely, even when: - a NetBird SSH policy exists - the destination server has NetBird SSH enabled - port `22022` is open and listening - both peers are connected to management successfully?
Sign in to join this conversation.
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: DYNR/netbird#11222