-
-
Notifications
You must be signed in to change notification settings - Fork 175
Description
Hi,
Here is an issue of tabby, a popular ssh terminal : Eugeny/tabby#10228 (comment)
russy works well when connecting SSH directly, but fail to run when connecting SSH through jumpserver.
Analysis and Solutions for JumpServer SSH Connection Disconnect Issues with Tabby Client
Original post
Published on 2025-08-22 09:14:13
· 1k views
· CC 4.0 BY-SA License
Project link: JumpServer on GitCode
JumpServer — a widely popular open-source bastion host
Problem Background
Recently, users reported an abnormal disconnection issue when using the Tabby client (version 1.0.223) to connect to JumpServer via SSH. Specifically, the connection disconnects automatically just a few seconds after being established. This issue does not occur when connecting to other SSH services.
Technical Analysis
After in-depth investigation, the root cause was identified as a compatibility problem between the russh SSH client library adopted by Tabby since version 1.0.216 and JumpServer’s keepalive mechanism.
Key Findings
Client change: Tabby switched to using russh as its SSH client library starting from version 1.0.216.
Issue characteristic: The rapid disconnection issue only occurs when connecting to JumpServer, while other SSH servers work fine.
Temporary workaround: Disabling keepalive in the Tabby client avoids the disconnects.
Root cause: The russh client likely cannot properly handle keepalive response packets sent by JumpServer.
Solutions
Solution 1: Adjust JumpServer Configuration
By setting the following parameter in JumpServer’s configuration, server-side keepalive heartbeats can be disabled:
CLIENT_ALIVE_INTERVAL=0
This setting prevents JumpServer from sending keepalive requests to clients, thus avoiding the compatibility problem.
Solution 2: Adjust Client Configuration
Disable the keepalive feature in Tabby:
Open Tabby settings.
Navigate to the SSH connection configuration.
Find and disable the keepalive option.
Solution 3: Downgrade or Wait for Fix
Since the issue was introduced in a specific Tabby version, users can:
Temporarily downgrade to Tabby version 1.0.215 or earlier.
Monitor Tabby’s updates and wait for an official fix.
In-depth Technical Explanation
The SSH keepalive mechanism is mainly used to maintain connection liveliness during long periods of inactivity. Typically, either the client or server periodically sends specific heartbeat packets to check the connection status. When one side fails to properly process keepalive packets from the other side, unexpected connection drops may occur.
JumpServer, as a jump host system, may implement SSH keepalive handling differently from the standard OpenSSH, and the russh client library currently does not fully handle these subtle differences, which leads to compatibility issues.
Summary
The compatibility issue between JumpServer and the newer Tabby client versions primarily stems from differences in handling SSH keepalive packets. By adjusting keepalive settings either on the server or client side, the connection disconnect problem can be effectively resolved.
It is recommended that users choose the most appropriate solution based on their environment and continue to monitor updates from the related projects to improve their experience.
For enterprise users, it is advisable to test configuration changes in a staging environment before applying them in production, ensuring system stability and security are maintained.