Connection to Cursor server failed: Couldn't install Cursor Server, install script returned non-zero exit status

Where does the bug appear (feature/product)?

Cursor IDE

Describe the Bug

Installation succeeds (the remote directory ~/.cursor-server/bin/<commit_id>/ is present), but the process still returns an error. Full log is as follows:

[info] SSH askpass server listening on port 50749
[debug] hostname: 2.120, remote platform map: {"2.120":"linux","2.4":"linux"}
[info] Using configured platform linux for remote host 2.120
[debug] hostname: 2.120, remote server install map: {}
[debug] hostname: 2.120, server port range map: {}
[info] Using askpass script: c:\Users\name\.cursor\extensions\anysphere.remote-ssh-1.0.35\dist\scripts\launchSSHAskpass.bat with javascript file c:\Users\name\.cursor\extensions\anysphere.remote-ssh-1.0.35\dist\scripts\sshAskClient.js. Askpass handle: 50749
[info] Launching SSH server via shell with command: type "C:\Users\name\AppData\Local\Temp\cursor_remote_install_ddb6647f-63e9-4aa9-9e1a-b26f31ac693d.sh" | ssh -T -D 50751 2.120 bash --login -c bash
[info] Establishing SSH connection: type "C:\Users\name\AppData\Local\Temp\cursor_remote_install_ddb6647f-63e9-4aa9-9e1a-b26f31ac693d.sh" | ssh -T -D 50751 2.120 bash --login -c bash
[info] Started installation script. Waiting for it to finish...
[info] Waiting for server to install. Timeout: 30000ms
[info] (ssh_tunnel) stderr: Welcome to JumpServer SSH Server

[info] (ssh_tunnel) stdout: 
echo "Configuring Cursor Server on Remote"


SERVER_COMMIT="56f0a83df8e9eb48585fcc4858a9440db4cc7770"
SERVER_REAL_COMMIT="56f0a83df8e9eb48585fcc4858a9440db4cc7771"
SERVER_LINE="production"
SERVER_DATA_DIR="$HOME/.cursor-server"
PORT_RANGE=""

# Probe for writable temporary directory
probe_tmp_dir() {
    if [[ -n "${XDG_RUNTIME_DIR}" && -d "${XDG_RUNTIME_DIR}" ]]; then
        local test_file="${XDG_RUNTIME_DIR}/cursor-test-$(date +%s)-$RANDOM"
        if touch "$test_file" 2>/dev/null && [[ -f "$test_file" ]]; then
            rm -f "$test_file"
            echo "${XDG_RUNTIME_DIR}"
            return 0
        fi
    fi
    if [[ -d "/tmp
[info] (ssh_tunnel) stdout: " ]]; then
        local test_file="/tmp/cursor-test-$(date +%s)-$RANDOM"
        if touch "$test_file" 2>/dev/null && [[ -f "$test_file" ]]; then
            rm -f "$test_file"
            echo "/tmp"
            return 0
        fi
    fi
    echo "$SERVER_DATA_DIR"  # fallback
}

TMP_DIR="$(probe_tmp_dir)"
echo "Using TMP_DIR: $TMP_DIR"
SERVER_DIR="$SERVER_DATA_DIR/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770"
SERVER_NODE_EXECUTABLE="$SERVER_DIR/node"
CODE_SERVER_SCRIPT="$SERVER_DIR/bin/cursor-server"
CODE_SERVER_PROCESS_ALL_VERSIONS_GREP_PATTERN="$SERVER_DATA_DIR/bin/.*/out/server-main.js"
CODE_LISTENING_ON=
CODE_SERVER_CONNECTION_TOKEN=
MULTIPLEX_SERVER_SCRIPT="$SERVER_DATA_DIR/bin/multiplex-server/3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8.js"
MULTIPLEX_LISTENING_ON=
SERVER_ARCH=
SERVER_DOWNLOAD_URL=
OS_RELEASE_ID=
ARCH=
PLATFORM=
export PATH="$SERVER_DIR/bin/remote-cli:$PATH"

get_tmp_file() {
    local suffix=$1
    echo "$TMP_DIR/cursor-remote-${suffix}.$(echo $SERVER_DATA_DIR | (md5sum 2>/dev/null || md5) | awk '{print $1}')"
}

get_tmp_file_with_hash() {
    local suffix=$1
    local hash=$2
    echo "$TMP_DIR/cursor-remote-${suffix}.$(echo $SERVER_DATA_DIR | (md5sum 2>/dev/null || md5) | awk '{print $1}').${hash}"
}



CODE_SERVER_LOGFILE="$(get_tmp_file 'code.log')"
CODE_SERVER_TOKENFILE="$(get_tmp_file 'code.token')"
CODE_SERVER_PIDFILE="$(get_tmp_file 'code.pid')"
MULTIPLEX_SERVER_LOGFILE="$(get_tmp_file_with_hash 'multiplex.log' '3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')"
MULTIPLEX_SERVER_TOKENFILE="$(get_tmp_file_with_hash 'multiplex.token' '3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')"
MULTIPLEX_SERVER_PIDFILE="$(get_tmp_file_with_hash 'multiplex.pid' '3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')"
MULTIPLEX_SERVER_PROCESS_ALL_VERSIONS_GREP_PATTERN="$SERVER_DATA_DIR/bin/multiplex-server/.*.js"

# These are magic variables that are used by the code server
exp
[info] (ssh_tunnel) stdout: ort VSCODE_AGENT_FOLDER="$SERVER_DATA_DIR"
export VSCODE_SERVER_SHUTDOWN_TIMEOUT="300"

# If the SSH_AUTH_SOCK is set, we symlink it to a well-known location based on the SSH_AUTH_SOCK_ID
# This is because terminals and other parts of the editor don't update to use the latest SSH_AUTH_SOCK
if [[ -n "$SSH_AUTH_SOCK" ]]; then
    if [[ -n "/tmp/cursor-remote-ssh-auth-sock-db425493-026f-4d1c-a6c6-b481ae72ffbd.sock" ]]; then
        ln -sf "$SSH_AUTH_SOCK" "/tmp/cursor-remote-ssh-auth-sock-db425493-026f-4d1c-a6c6-b481ae72ffbd.sock"
        export SSH_AUTH_SOCK="/tmp/cursor-remote-ssh-auth-sock-db425493-026f-4d1c-a6c6-b481ae72ffbd.sock"
    fi
fi

print_install_results_and_exit() {
    echo "56284375419e16563f0b7b1c: start"
    echo "exitCode==$1=="
    echo "nodeExecutable==$SERVER_NODE_EXECUTABLE=="
    echo "multiplexListeningOn==$MULTIPLEX_LISTENING_ON=="
    echo "multiplexConnectionToken==$MULTIPLEX_SERVER_CONNECTION_TOKEN=="
    echo "codeListeningOn==$CODE_LISTENING_ON=="
    echo "errorMessage==$2=="
    echo "isFatalError==$3=="
    echo "codeConnectionToken==$CODE_SERVER_CONNECTION_TOKEN=="
    echo "detectedPlatform==$PLATFORM=="
    echo "arch==$SERVER_ARCH=="
    echo "SSH_AUTH_SOCK==$SSH_AUTH_SOCK=="
    echo "56284375419e16563f0b7b1c: end"
    exit $1
}

print_install_results_and_wait() {
    # Try to get PIDs from PID files first, fallback to extracting from running processes
    if [[ -f $CODE_SERVER_PIDFILE ]];
[info] Server install command exit code:  1
[error] Error installing server: [Error: Couldn't install Cursor Server, install script returned non-zero exit status
	at t.installCodeServer (c:\Users\name\.cursor\extensions\anysphere.remote-ssh-1.0.35\dist\main.js:2:957522)
	at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
	at async c:\Users\name\.cursor\extensions\anysphere.remote-ssh-1.0.35\dist\main.js:2:406600]
[info] Deleting local script C:\Users\name\AppData\Local\Temp\cursor_remote_install_ddb6647f-63e9-4aa9-9e1a-b26f31ac693d.sh
[error] Error resolving SSH authority [Error: Couldn't install Cursor Server, install script returned non-zero exit status
	at t.installCodeServer (c:\Users\name\.cursor\extensions\anysphere.remote-ssh-1.0.35\dist\main.js:2:957522)
	at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
	at async c:\Users\name\.cursor\extensions\anysphere.remote-ssh-1.0.35\dist\main.js:2:406600]
[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<02120:~$ echo "Configuring Cursor Server on Remote"
Configuring Cursor Server on Remote
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
R(base) name@ubuntu-DeepLearning-4802120:~$ 
<R_COMMIT="56f0a83df8e9eb48585fcc4858a9440db4cc7770"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<L_COMMIT="56f0a83df8e9eb48585fcc4858a9440db4cc7771"
(base) name@ubuntu-DeepLearning-4802120:~$ SERVER_LINE="production"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<g-4802120:~$ SERVER_DATA_DIR="$HOME/.cursor-server"
(base) name@ubuntu-DeepLearning-4802120:~$ PORT_RANGE=""
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<4802120:~$ # Probe for writable temporary directory
(base) name@ubuntu-DeepLearning-4802120:~$ probe_tmp_dir() {
>     if [[ -n "${XDG_RUNTIME_DIR}" && -d "${XDG_RUNTIME_DIR}" ]]; then
> 
<${XDG_RUNTIME_DIR}/cursor-test-$(date +%s)-$RANDOM"
>         if touch "$test_file" 2>/dev/null && [[ -f "$test_file" ]]; then
>             rm -f "$test_file"
>             echo "${XDG_RUNTIME_DIR}"
>             return 0
>         fi
>     fi
>     if [[ -d "/tmp" ]]; then
>         local test_file="/tmp/cursor-test-$(date +%s)-$RANDOM"
>         if touch "$test_file" 2>/dev/null && [[ -f "$test_file" ]]; then
>             rm -f "$test_file"
>             echo "/tmp"
>             return 0
>         fi
>     fi
>     echo "$SERVER_DATA_DIR"  # fallback
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ TMP_DIR="$(probe_tmp_dir)"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<pLearning-4802120:~$ echo "Using TMP_DIR: $TMP_DIR"
Using TMP_DIR: /run/user/2342
(base) name@ubuntu-DeepLearning-4802120:~$ 
<A_DIR/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<802120:~$ SERVER_NODE_EXECUTABLE="$SERVER_DIR/node"
(base) name@ubuntu-DeepLearning-4802120:~$ 
< CODE_SERVER_SCRIPT="$SERVER_DIR/bin/cursor-server"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<ATTERN="$SERVER_DATA_DIR/bin/.*/out/server-main.js"
(base) name@ubuntu-DeepLearning-4802120:~$ CODE_LISTENING_ON=
(base) name@ubuntu-DeepLearning-4802120:~$ 
<epLearning-4802120:~$ CODE_SERVER_CONNECTION_TOKEN=
(base) name@ubuntu-DeepLearning-4802120:~$ 
<6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8.js"
(base) name@ubuntu-DeepLearning-4802120:~$ MULTIPLEX_LISTENING_ON=
(base) name@ubuntu-DeepLearning-4802120:~$ SERVER_ARCH=
(base) name@ubuntu-DeepLearning-4802120:~$ SERVER_DOWNLOAD_URL=
(base) name@ubuntu-DeepLearning-4802120:~$ OS_RELEASE_ID=
(base) name@ubuntu-DeepLearning-4802120:~$ ARCH=
(base) name@ubuntu-DeepLearning-4802120:~$ PLATFORM=
(base) name@ubuntu-DeepLearning-4802120:~$ 
<0:~$ export PATH="$SERVER_DIR/bin/remote-cli:$PATH"
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ get_tmp_file() {
>     local suffix=$1
> 
< | (md5sum 2>/dev/null || md5) | awk '{print $1}')"
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ get_tmp_file_with_hash() {
>     local suffix=$1
>     local hash=$2
> 
<um 2>/dev/null || md5) | awk '{print $1}').${hash}"
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 

(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<~$ CODE_SERVER_LOGFILE="$(get_tmp_file 'code.log')"

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<ODE_SERVER_TOKENFILE="$(get_tmp_file 'code.token')"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<~$ CODE_SERVER_PIDFILE="$(get_tmp_file 'code.pid')"

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')"

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')"

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')"

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<TTERN="$SERVER_DATA_DIR/bin/multiplex-server/.*.js"
(base) name@ubuntu-DeepLearning-4802120:~$ 

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<re magic variables that are used by the code server
(base) name@ubuntu-DeepLearning-4802120:~$ 
<20:~$ export VSCODE_AGENT_FOLDER="$SERVER_DATA_DIR"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<2120:~$ export VSCODE_SERVER_SHUTDOWN_TIMEOUT="300"
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<a well-known location based on the SSH_AUTH_SOCK_ID
(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<editor don't update to use the latest SSH_AUTH_SOCK

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<rning-4802120:~$ if [[ -n "$SSH_AUTH_SOCK" ]]; then
> 
<db425493-026f-4d1c-a6c6-b481ae72ffbd.sock" ]]; then
> 
[info] (ssh_tunnel) stdout: 
<uth-sock-db425493-026f-4d1c-a6c6-b481ae72ffbd.sock"

[info] (ssh_tunnel) stdout: > 
[info] (ssh_tunnel) stdout: 
<uth-sock-db425493-026f-4d1c-a6c6-b481ae72ffbd.sock"
>     fi
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<rning-4802120:~$ print_install_results_and_exit() {
> 
[info] (ssh_tunnel) stdout:     echo "56284375419e16563f0b7b1c: start"
> 
[info] (ssh_tunnel) stdout:     echo "exitCode==$1=="
>     echo "nodeExecutable==$SERVER_NODE_EXECUTABLE=="
> 
[info] (ssh_tunnel) stdout:     echo "multiplexListeningOn==$MULTIPLEX_LISTENING_ON=="
> 
[info] (ssh_tunnel) stdout:     echo "multiplexConnectionToken==$MULTIPLEX_SERVER_CONNECTION_TOKEN=="
>     echo "codeListeningOn==$CODE_LISTENING_ON=="
>     echo "errorMessage==$2=="
>     echo "isFatalError==$3=="

[info] (ssh_tunnel) stdout: > 
[info] (ssh_tunnel) stdout:     echo "codeConnectionToken==$CODE_SERVER_CONNECTION_TOKEN=="
>     echo "detectedPlatform==$PLATFORM=="
>     echo "arch==$SERVER_ARCH=="
>     echo "SSH_AUTH_SOCK==$SSH_AUTH_SOCK=="
>     echo "56284375419e16563f0b7b1c: end"
>     exit $1
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<rning-4802120:~$ print_install_results_and_wait() {
> 
<irst, fallback to extracting from running processes
>     if [[ -f $CODE_SERVER_PIDFILE ]]; then
>         CODE_SERVER_PID="$(cat $CODE_SERVER_PIDFILE)"
>     else
>         # PID file doesn't exist, try to extract PID from running process
> 
<grep $CODE_SERVER_SCRIPT | grep -v grep | head -1)"
> 
[info] (ssh_tunnel) stdout:         if [[ -n "$CODE_SERVER_RUNNING_PROCESS" ]]; then
> 
[info] (ssh_tunnel) stdout: 
<"$CODE_SERVER_RUNNING_PROCESS" | awk '{print $1}')"
>         else

[info] (ssh_tunnel) stdout: > 
<nd no running code server process detected" "false"
>         fi
>     fi
> 
>     if [[ -f $MULTIPLEX_SERVER_PIDFILE ]]; then
>         MULTIPLEX_SERVER_PID="$(cat $MULTIPLEX_SERVER_PIDFILE)"
>     else
>         # PID file doesn't exist, try to extract PID from running process

[info] (ssh_tunnel) stdout: > 
[info] (ssh_tunnel) stdout: 
<$MULTIPLEX_SERVER_SCRIPT | grep -v grep | head -1)"
> 
[info] (ssh_tunnel) stdout:         if [[ -n "$MULTIPLEX_SERVER_RUNNING_PROCESS" ]]; then

[info] (ssh_tunnel) stdout: > 
<TIPLEX_SERVER_RUNNING_PROCESS" | awk '{print $1}')"
>         else

[info] (ssh_tunnel) stdout: > 
<d and no running multiplex server process detected"
> 
<sn't exist, so the while loop will exit immediately
>             MULTIPLEX_SERVER_PID=invalid_pid
>         fi
>     fi
> 
z
[info] (ssh_tunnel) stdout: >     echo "56284375419e16563f0b7b1c: start"
>     echo "exitCode==0=="
>     echo "nodeExecutable==$SERVER_NODE_EXECUTABLE=="

[info] (ssh_tunnel) stdout: >     echo "errorMessage===="
>     echo "isFatalError==false=="
> 
[info] (ssh_tunnel) stdout:     echo "multiplexListeningOn==$MULTIPLEX_LISTENING_ON=="
>     echo "multiplexConnectionToken==$MULTIPLEX_SERVER_CONNECTION_TOKEN=="

[info] (ssh_tunnel) stdout: >     echo "codeListeningOn==$CODE_LISTENING_ON=="
> 
[info] (ssh_tunnel) stdout:     echo "codeConnectionToken==$CODE_SERVER_CONNECTION_TOKEN=="
>     echo "detectedPlatform==$PLATFORM=="
>     echo "arch==$SERVER_ARCH=="
>     echo "SSH_AUTH_SOCK==$SSH_AUTH_SOCK=="
>     echo "56284375419e16563f0b7b1c: end"
>     unlock
>     trap - EXIT
>     echo " "
> 
[info] (ssh_tunnel) stdout: 
<**************************************************"

[info] (ssh_tunnel) stdout: > 
<ed to establish and maintain the SSH connection. *"

[info] (ssh_tunnel) stdout: > 
<al will terminate the connection and disconnect  *"
> 
[info] (ssh_tunnel) stdout: 
<ote server.                                      *"

[info] (ssh_tunnel) stdout: > 
<**************************************************"
> 
[info] (ssh_tunnel) stdout: 
<r over ssh, the code server won't have a connection
>     while kill -0 $CODE_SERVER_PID 2>/dev/null
>     do

[info] (ssh_tunnel) stdout: >         sleep 10
>     done
> 
[info] (ssh_tunnel) stdout:     echo "Code server process $CODE_SERVER_PID died"
>     while kill -0 $MULTIPLEX_SERVER_PID 2>/dev/null
>     do
>         sleep 11
>     done
>     echo "Multiplex server process $MULTIPLEX_SERVER_PID died"

[info] (ssh_tunnel) stdout: >     exit 0
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ get_lockfile() {
> 
< | (md5sum 2>/dev/null || md5) | awk '{print $1}')"

[info] (ssh_tunnel) stdout: > }
(base) name@ubuntu-DeepLearning-4802120:~$ 
 (base) name@ubuntu-DeepLearning-4802120:~$ 
<Learning-4802120:~$ if [[ "true" == "true" ]]; then
> 
[info] (ssh_tunnel) stdout:     echo "Killing all running Cursor servers"
> 
<_ALL_VERSIONS_GREP_PATTERN | grep -v grep || true)"
>     if [[ -z "$CODE_SERVER_RUNNING_PROCESS" ]]; then
>         echo "No running code servers found"
>     fi
>     echo "Killing running code servers: $CODE_SERVER_RUNNING_PROCESS"
>     echo "$CODE_SERVER_RUNNING_PROCESS" | while read -r line; do

[info] (ssh_tunnel) stdout: > 
[info] (ssh_tunnel) stdout:         pid=$(echo "$line" | awk '{print $1}')
>         if [[ -n "$pid" ]]; then
>             echo "Killing server process with PID: $pid"
>             kill -9 "$pid"
>         fi
>     done
>     CODE_SERVER_RUNNING_PROCESS=""
>     echo "Killing all running multiplex servers"
> 
<_ALL_VERSIONS_GREP_PATTERN | grep -v grep || true)"
> 
[info] (ssh_tunnel) stdout:     if [[ -z "$MULTIPLEX_SERVER_RUNNING_PROCESS" ]]; then
>         echo "No running multiplex servers found"
>     fi
> 
<ltiplex servers: $MULTIPLEX_SERVER_RUNNING_PROCESS"
>     echo "$MULTIPLEX_SERVER_RUNNING_PROCESS" | while read -r line; do
>         pid=$(echo "$line" | awk '{print $1}')
>         if [[ -n "$pid" ]]; then
>             echo "Killing server process with PID: $pid"
>             kill -9 "$pid"
>         fi
>     done
>     MULTIPLEX_SERVER_RUNNING_PROCESS=""

[info] (ssh_tunnel) stdout: > fi
Killing all running Cursor servers

[info] (ssh_tunnel) stdout: Killing running code servers: 1413297 /home/name/.cursor-server/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770/node /home/name/.cursor-server/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770/out/server-main.js --start-server --host=127.0.0.1 --port 0 --connection-token-file /run/user/2342/cursor-remote-code.token.ef11e3312548c10c1b59713f964cb812 --telemetry-level off --enable-remote-auto-shutdown --accept-server-license-terms

[info] (ssh_tunnel) stdout: Killing server process with PID: 1413297

[info] (ssh_tunnel) stdout: Killing all running multiplex servers

[info] (ssh_tunnel) stdout: Killing running multiplex servers: 1413258 /home/name/.cursor-server/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770/node /home/name/.cursor-server/bin/multiplex-server/3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8.js 00865866-a0f1-46fc-a515-a1b666179554 0
Killing server process with PID: 1413258
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<Learning-4802120:~$ if [[ 'true' == "true" ]]; then
>     echo "Removing all existing Cursor installations"
> 
[info] (ssh_tunnel) stdout: 
<3c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8')
> 
8>     # Don't delete the server we just copied
> 
<server-278c5cd8-c24c-4fcd-9a75-ab44b1a11f03.tar.gz"
> 
<c24c-4fcd-9a75-ab44b1a11f03.tar.gz)" -delete -print

[info] (ssh_tunnel) stdout: >     echo "Done deleting left behind cursor servers"
> fi
Removing all existing Cursor installations

[info] (ssh_tunnel) stdout: Deleting left behind cursor servers, except for /home/name/.cursor-server/cursor-server-278c5cd8-c24c-4fcd-9a75-ab44b1a11f03.tar.gz
Done deleting left behind cursor servers
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ unlock() {
>     lockfile=$(get_lockfile)
>     if [ -n "$LOCK_PID" ]; then
>         kill $LOCK_PID 2>/dev/null
>     fi
>     echo "Unlocking $lockfile"
>     rm -f "$lockfile"
>     rm -f "$lockfile.target"
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
i(base) name@ubuntu-DeepLearning-4802120:~$ lock() {
>     lockfile=$(get_lockfile)
>     echo "Locking $lockfile"
>     lockAcquired=0
 >     for i in {1..30}; do
 >         if [ -f "$lockfile" ]; then
>             # Check if lock is stale (older than 10 seconds)
>             current_time=$(date +%s)
>             lock_time=$(cat "$lockfile" 2>/dev/null || echo 0)
>             if [ $((current_time - lock_time)) -gt 10 ]; then
>                 echo "Found stale lock, removing..."
>                 rm -f "$lockfile"
>             fi
>         fi
>         touch "$lockfile.target"
>         ln "$lockfile.target" "$lockfile"
>         if [ $? -eq 0 ]; then
>             lockAcquired=1
>             # Start a background process to update timestamp
> 
< -- really bad to having processes dangling forever
>             counter=0
l >             while [ $counter -lt 900 ]; do
>                 date +%s > "$lockfile"
>                 sleep 1
t>                 counter=$((counter + 1))
>             done &
>             LOCK_PID=$!
>             break
>         fi
>         echo "Install in progress, sleeping for a bit..."
>         sleep 1
>     done
>     if [ $lockAcquired -eq 0 ]; then
> 
< 1 "Could not acquire lock after multiple attempts"
>     fi
n>     trap unlock EXIT
> }
(base) name@ubuntu-DeepLearning-4802120:~$ 
 (base) name@ubuntu-DeepLearning-4802120:~$ KERNEL="$(uname -s)"
(base) name@ubuntu-DeepLearning-4802120:~$ case $KERNEL in
>     Darwin)
>         PLATFORM="darwin"
>         ;;
>     Linux)
>         PLATFORM="linux"
>         ;;
>     FreeBSD)
>         PLATFORM="linux"
>         ;;
i>     *)
t> 
<and_exit 1 "Platform not supported: $KERNEL" "true"
>         ;;
> esac
(base) name@ubuntu-DeepLearning-4802120:~$ 
 (base) name@ubuntu-DeepLearning-4802120:~$ ARCH="$(uname -m)"
(base) name@ubuntu-DeepLearning-4802120:~$ case $ARCH in
>     x86_64 | amd64)
>         SERVER_ARCH="x64"
>         ;;
>     arm64 | aarch64)
S>         SERVER_ARCH="arm64"
>         ;;
>     *)
> 
<d_exit 1 "Architecture not supported: $ARCH" "true"
>         ;;
> esac
(base) name@ubuntu-DeepLearning-4802120:~$ 
 (base) name@ubuntu-DeepLearning-4802120:~$ 
<ase 2>/dev/null | sed 's/^ID=//gi' | sed 's/"//g')"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<earning-4802120:~$ if [[ -z $OS_RELEASE_ID ]]; then
> 
<ase 2>/dev/null | sed 's/^ID=//gi' | sed 's/"//g')"
>     if [[ -z $OS_RELEASE_ID ]]; then
>         OS_RELEASE_ID="unknown"
>     fi
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
e(base) name@ubuntu-DeepLearning-4802120:~$ 
<eepLearning-4802120:~$ # Create installation folder
(base) name@ubuntu-DeepLearning-4802120:~$ mkdir -p $SERVER_DIR
(base) name@ubuntu-DeepLearning-4802120:~$ if (( $? > 0 )); then
> 
<rror creating server install directory $SERVER_DIR"
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<alpine (musl-libc based binary) download, if needed
(base) name@ubuntu-DeepLearning-4802120:~$ 
<g-4802120:~$ if [[ $OS_RELEASE_ID = alpine ]]; then
>     PLATFORM=$OS_RELEASE_ID
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
<m}/$PLATFORM/g" | sed "s/\${arch}/$SERVER_ARCH/g")"
(base) name@ubuntu-DeepLearning-4802120:~$ lock
Locking /run/user/2342/cursor-remote-lock.ef11e3312548c10c1b59713f964cb812
[1] 1427473
(base) name@ubuntu-DeepLearning-4802120:~$ 
<20:~$ # Check if server script is already installed
(base) name@ubuntu-DeepLearning-4802120:~$ 
<-4802120:~$ if [[ ! -f $CODE_SERVER_SCRIPT ]]; then
>     pushd $SERVER_DIR > /dev/null
> 
<server-e8062393-79b7-4980-a561-83c30696490a.tar.gz"
> 
<8c5cd8-c24c-4fcd-9a75-ab44b1a11f03.tar.gz" ]]; then
> 
<44b1a11f03.tar.gz, using it instead of downloading"
> 
<24c-4fcd-9a75-ab44b1a11f03.tar.gz" $RANDOM_FILENAME
>     else
>         if [[ 'false' == 'true' ]]; then
> 
<b44b1a11f03.tar.gz, and local download is required"
> 
<ed: Failed to copy server from local client" "true"
>         fi
>         if [[ ! -z $(which wget) ]]; then
> 
<wget from $SERVER_DOWNLOAD_URL to $RANDOM_FILENAME"
> 
<ss bar when supported (GNU Wget). Fall back if not.
>             if wget --help 2>&1 | grep -q -- '--progress='; then
>                 WGET_PROGRESS='--progress=bar:force:noscroll'
>             else
>                 WGET_PROGRESS='--progress=dot'
>             fi
> 
<T_PROGRESS -O $RANDOM_FILENAME $SERVER_DOWNLOAD_URL
>         elif [[ ! -z $(which curl) ]]; then
> 
<curl from $SERVER_DOWNLOAD_URL to $RANDOM_FILENAME"
> 
<-bar --output $RANDOM_FILENAME $SERVER_DOWNLOAD_URL
>         else
> 
< server binary. Please install wget or curl" "true"
>         fi
>         if (( $? > 0 )); then
>             if [[ "$OS_RELEASE_ID" == 'alpine' && 'false' = 'true' ]]; then
> 
<y fails, and we know that the version is pre-Alpine
> 
< download to fail if it actually would have worked!
> 
<n to connect to Alpine-based remote servers" "true"
>             fi
> 
<wnloading server from $SERVER_DOWNLOAD_URL" "false"
>         fi
>     fi
Y>     echo "Extracting server contents from $RANDOM_FILENAME"
>     tar -xf $RANDOM_FILENAME --strip-components 1
>     if (( $? > 0 )); then
> 
<ract server contents from $RANDOM_FILENAME" "false"
>     fi
>     if [[ ! -f $CODE_SERVER_SCRIPT ]]; then
> 
<ct code server script: $CODE_SERVER_SCRIPT" "false"
>     fi
>     rm -f $RANDOM_FILENAME
>     popd > /dev/null
> else
>     echo "Server script already installed in $CODE_SERVER_SCRIPT"
> fi
Downloading server via wget from https://downloads.cursor.com/production/56f0a83df8e9eb48585fcc4858a9440db4cc7771/linux/x64/cursor-reh-linux-x64.tar.gz to cursor-server-e8062393-79b7-4980-a561-83c30696490a.tar.gz
--2025-12-15 10:46:21--  https://downloads.cursor.com/production/56f0a83df8e9eb48585fcc4858a9440db4cc7771/linux/x64/cursor-reh-linux-x64.tar.gz
Resolving downloads.cursor.com (downloads.cursor.com)... 104.18.16.128, 104.18.17.128, 2606:4700::6812:1180, ...
Connecting to downloads.cursor.com (downloads.cursor.com)|104.18.16.128|:443... 
[info] (ssh_tunnel) stdout: connected.

[info] (ssh_tunnel) stdout: HTTP request sent, awaiting response... 
[info] (ssh_tunnel) stdout: 200 OK
Length: 68648615 (65M) [application/gzip]

[info] (ssh_tunnel) stdout: Saving to: ‘cursor-server-e8062393-79b7-4980-a561-83c30696490a.tar.gz’


cursor-server-e8062   0%[                    ]       0  --.-KB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   0%[                    ]  41.42K   141KB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   0%[                    ] 144.52K   292KB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   0%[                    ] 264.00K   266KB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   2%[                    ]   1.38M  1.16MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   4%[                    ]   3.08M  2.21MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   6%[>                   ]   3.96M  2.47MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062   7%[>                   ]   5.21M  2.89MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  14%[=>                  ]   9.36M  4.52MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  18%[==>                 ]  12.34M  5.21MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  23%[===>                ]  15.33M  5.70MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  27%[====>               ]  18.02M  6.23MB/s               
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  27%[====>               ]  18.14M  5.68MB/s    eta 8s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  32%[=====>              ]  21.33M  6.28MB/s    eta 8s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  38%[======>             ]  25.28M  6.52MB/s    eta 8s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  43%[=======>            ]  28.31M  7.22MB/s    eta 8s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  48%[========>           ]  32.01M  8.05MB/s    eta 4s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  49%[========>           ]  32.49M  7.84MB/s    eta 4s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  54%[=========>          ]  35.75M  9.33MB/s    eta 4s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  59%[==========>         ]  39.03M  9.94MB/s    eta 4s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  61%[===========>        ]  40.21M  9.74MB/s    eta 4s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  65%[============>       ]  43.15M  10.0MB/s    eta 3s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  70%[=============>      ]  46.29M  10.1MB/s    eta 3s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  72%[=============>      ]  47.59M  9.52MB/s    eta 3s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  77%[==============>     ]  50.42M  9.85MB/s    eta 3s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  80%[===============>    ]  52.55M  9.73MB/s    eta 2s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  82%[===============>    ]  53.95M  9.52MB/s    eta 2s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  86%[================>   ]  56.82M  10.4MB/s    eta 2s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  90%[=================>  ]  59.01M  9.47MB/s    eta 2s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  91%[=================>  ]  60.16M  9.88MB/s    eta 2s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  96%[==================> ]  63.40M  9.94MB/s    eta 0s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062  97%[==================> ]  63.77M  8.71MB/s    eta 0s     
[info] (ssh_tunnel) stdout: 
cursor-server-e8062 100%[===================>]  65.47M  9.00MB/s    in 8.1s    

2025-12-15 10:46:29 (8.13 MB/s) - ‘cursor-server-e8062393-79b7-4980-a561-83c30696490a.tar.gz’ saved [68648615/68648615]

### Steps to Reproduce
Open cursor
Install `Remote-SSH (1.0.35)`
Connect via SSH







### Operating System
Windows 10/11

### Current Cursor Version (Menu -> About Cursor -> Copy)
Version: 2.1.50 (system setup)
VSCode Version: 1.105.1
Commit: 56f0a83df8e9eb48585fcc4858a9440db4cc7770
Date: 2025-12-06T23:39:52.834Z
Electron: 37.7.0
Chromium: 138.0.7204.251
Node.js: 22.20.0
V8: 13.8.258.32-electron.0
OS: Windows_NT x64 10.0.26100







### Does this stop you from using Cursor
Yes - Cursor is unusable
2025-12-15 10:46:29 (8.13 MB/s) - ‘cursor-server-e8062393-79b7-4980-a561-83c30696490a.tar.gz’ saved [68648615/68648615]


[info] (ssh_tunnel) stdout: Extracting server contents from cursor-server-e8062393-79b7-4980-a561-83c30696490a.tar.gz

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<Learning-4802120:~$ echo "Checking node executable"
Checking node executable
(base) name@ubuntu-DeepLearning-4802120:~$ 
<120:~$ if ! $SERVER_NODE_EXECUTABLE --version; then
> 
<DE_EXECUTABLE is not working, checking system node"
>     SYSTEM_NODE=$(which node)
>     if [[ -n "$SYSTEM_NODE" ]]; then
>         echo "System node version: $($SYSTEM_NODE --version)"
> 
<(parseInt(process.version.slice(1)) >= 20 ? 0 : 1)"

[info] (ssh_tunnel) stdout: >         if [[ $? -eq 0 ]]; then
>             echo "System node version is 20 or higher, creating symlink"
>             ln -sf $SYSTEM_NODE $SERVER_NODE_EXECUTABLE
> 
<mlink from $SERVER_NODE_EXECUTABLE to $SYSTEM_NODE"
>         else
> 
<l NodeJS 20 or higher on your remote system" "true"
>         fi
>     else
> 
<l NodeJS 20 or higher on your remote system" "true"
>     fi
> fi

[info] (ssh_tunnel) stdout: v20.18.2

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
E(base) name@ubuntu-DeepLearning-4802120:~$ # Clean up stale builds

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<ITS=$(ls -1 -t "$SERVER_DATA_DIR/bin" | tail -n +6)

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<rning-4802120:~$ for OLD_COMMIT in $OLD_COMMITS; do
> 
<_COMMIT | grep -v grep | wc -l | tr -d '[:space:]'`

[info] (ssh_tunnel) stdout: >     if [[ $IS_RUNNING -eq 0 ]]; then
>         echo "Cleaning up stale build $OLD_COMMIT"
>         if [[ "$OLD_COMMIT" != "$SERVER_COMMIT" ]]; then
> 
</bin/$OLD_COMMIT" "$SERVER_DATA_DIR/.$OLD_COMMIT.*"
>         fi
>     else
>         echo "Build $OLD_COMMIT is still running, skipping"
>     fi
> done
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<i/code -> $SERVER_DIR/bin/remote-cli/cursor (force)
(base) name@ubuntu-DeepLearning-4802120:~$ 
<2120:~$ REMOTE_CLI_DIR="$SERVER_DIR/bin/remote-cli"
(base) name@ubuntu-DeepLearning-4802120:~$ 
<arning-4802120:~$ if [ -d "$REMOTE_CLI_DIR" ]; then
>     ln -sf cursor "$REMOTE_CLI_DIR/code"
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<02120:~$ # Try to find if server is already running
(base) name@ubuntu-DeepLearning-4802120:~$ 
<running multiplex server: $MULTIPLEX_SERVER_SCRIPT"
Checking for running multiplex server: /home/name/.cursor-server/bin/multiplex-server/3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8.js
(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<2120:~$ if [[ -f $MULTIPLEX_SERVER_PIDFILE ]]; then
>     MULTIPLEX_SERVER_PID="$(cat $MULTIPLEX_SERVER_PIDFILE)"
> 
<TIPLEX_SERVER_PID | grep $MULTIPLEX_SERVER_SCRIPT)"

[info] (ssh_tunnel) stdout: > else
> 
<-A | grep $MULTIPLEX_SERVER_SCRIPT | grep -v grep)"
> fi

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
<ultiplex server: $MULTIPLEX_SERVER_RUNNING_PROCESS"

[info] (ssh_tunnel) stdout: Running multiplex server: 
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<OGFILE || ! -f $MULTIPLEX_SERVER_TOKENFILE ]]; then
>     if [[ -f $MULTIPLEX_SERVER_LOGFILE ]]; then
>         rm $MULTIPLEX_SERVER_LOGFILE
>     fi
>     if [[ -f $MULTIPLEX_SERVER_TOKENFILE ]]; then
>         rm $MULTIPLEX_SERVER_TOKENFILE
>     fi
> 
>     echo "Creating multiplex server token file $MULTIPLEX_SERVER_TOKENFILE"
>     touch $MULTIPLEX_SERVER_TOKENFILE
>     chmod 600 $MULTIPLEX_SERVER_TOKENFILE
> 
<ECTION_TOKEN="cff3754c-de82-4df6-ae34-44f359fd1d87"
>     echo $MULTIPLEX_SERVER_CONNECTION_TOKEN > $MULTIPLEX_SERVER_TOKENFILE
> 
> 
<e manually inject it into the extension host later.
> 
<s from being used across ALL connections by default
> 
>     # Backing it up, NOT exporting it
>     if [[ -n "$SSH_AUTH_SOCK" ]]; then

[info] (ssh_tunnel) stdout: >         ORIGINAL_SSH_AUTH_SOCK=$SSH_AUTH_SOCK
>         unset SSH_AUTH_SOCK
>     fi
> 
> 
<tiplex server: $(dirname $MULTIPLEX_SERVER_SCRIPT)"
>     mkdir -p $(dirname "$MULTIPLEX_SERVER_SCRIPT")
>     echo "Writing multiplex server script to $MULTIPLEX_SERVER_SCRIPT"
> 
[info] (ssh_tunnel) stdout: 
<dev/null || base64 -D) > "$MULTIPLEX_SERVER_SCRIPT"

[info] (ssh_tunnel) stdout: > 
L> 
[info] (ssh_tunnel) stdout: 
<multiplex server (or empty string for OS selection)
> 
[info] (ssh_tunnel) stdout:     MULTIPLEX_SERVER_PORT_ARG="${PORT_RANGE:-0}"
> 
 > 
<SERVER_CONNECTION_TOKEN $MULTIPLEX_SERVER_PORT_ARG"

[info] (ssh_tunnel) stdout: > 
<LEX_SERVER_PORT_ARG" &> $MULTIPLEX_SERVER_LOGFILE &
>     echo $! > $MULTIPLEX_SERVER_PIDFILE
> 
<E) and wrote pid to file $MULTIPLEX_SERVER_PIDFILE"
> 
$>     # Restoring the original SSH_AUTH_SOCK
>     if [[ -n "$ORIGINAL_SSH_AUTH_SOCK" ]]; then
>         export SSH_AUTH_SOCK=$ORIGINAL_SSH_AUTH_SOCK
>         unset ORIGINAL_SSH_AUTH_SOCK
>     fi
'> else
> 
<ng processes are $MULTIPLEX_SERVER_RUNNING_PROCESS"
> fi
Creating multiplex server token file /run/user/2342/cursor-remote-multiplex.token.ef11e3312548c10c1b59713f964cb812.3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8

[info] (ssh_tunnel) stdout: Creating directory for multiplex server: /home/name/.cursor-server/bin/multiplex-server

[info] (ssh_tunnel) stdout: Writing multiplex server script to /home/name/.cursor-server/bin/multiplex-server/3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8.js

[info] (ssh_tunnel) stdout: Starting multiplex server: /home/name/.cursor-server/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770/node /home/name/.cursor-server/bin/multiplex-server/3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8.js cff3754c-de82-4df6-ae34-44f359fd1d87 0

[info] (ssh_tunnel) stdout: [2] 1427934

[info] (ssh_tunnel) stdout: Multiplex server started with PID 1427934 and wrote pid to file /run/user/2342/cursor-remote-multiplex.pid.ef11e3312548c10c1b59713f964cb812.3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8
(base) name@ubuntu-DeepLearning-4802120:~$ 
.(base) name@ubuntu-DeepLearning-4802120:~$ 
<plex server token file $MULTIPLEX_SERVER_TOKENFILE"
Reading multiplex server token file /run/user/2342/cursor-remote-multiplex.token.ef11e3312548c10c1b59713f964cb812.3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8
(base) name@ubuntu-DeepLearning-4802120:~$ 
v(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<20:~$ if [[ -f $MULTIPLEX_SERVER_TOKENFILE ]]; then
>     echo "Multiplex server token file found"
>     MULTIPLEX_SERVER_CONNECTION_TOKEN="$(cat $MULTIPLEX_SERVER_TOKENFILE)"
> else

[info] (ssh_tunnel) stdout: > 
< token file not found: $MULTIPLEX_SERVER_TOKENFILE"
wai> fi
t
Multiplex server token file found

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<ultiplex server log file $MULTIPLEX_SERVER_LOGFILE"
Reading multiplex server log file /run/user/2342/cursor-remote-multiplex.log.ef11e3312548c10c1b59713f964cb812.3ce73d09cffc8f33c6d911e972bd0f6dabbe3e26e810844be8060e6b10987db8
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ for i in {1..180}; do
>     if [[ -f $MULTIPLEX_SERVER_LOGFILE ]]; then
> 
<listening on .+' | sed 's/Server listening on //')"
>         if [[ -n "$MULTIPLEX_LISTENING_ON" ]]; then
>             break
>         fi
>     fi
>     sleep 0.5
> done

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<2120:~$ if [[ -z "$MULTIPLEX_LISTENING_ON" ]]; then

[info] (ssh_tunnel) stdout: > 
<ver did not start successfully. Below are the logs"

[info] (ssh_tunnel) stdout: >     # Reading the logfile, to help with debugging
>     ls -al $MULTIPLEX_SERVER_LOGFILE || true
>     cat $MULTIPLEX_SERVER_LOGFILE || true
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
[info] (ssh_tunnel) stdout: 
<earning-4802120:~$ echo "Checking for code servers"
Checking for code servers
(base) name@ubuntu-DeepLearning-4802120:~$ 
<g-4802120:~$ if [[ -f $CODE_SERVER_PIDFILE ]]; then
>     CODE_SERVER_PID="$(cat $CODE_SERVER_PIDFILE)"
> 
<ep -w $CODE_SERVER_PID | grep $CODE_SERVER_SCRIPT)"

[info] (ssh_tunnel) stdout: > else
> 
<args -A | grep $CODE_SERVER_SCRIPT | grep -v grep)"
> fi

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<les exists; otherwise we need to start a new server
(base) name@ubuntu-DeepLearning-4802120:~$ 
<VER_TOKENFILE || ! -f $CODE_SERVER_LOGFILE ]]; then

[info] (ssh_tunnel) stdout: >     echo "Code server script is not running"
>     if [[ -f $CODE_SERVER_LOGFILE ]]; then
>         rm $CODE_SERVER_LOGFILE
>     fi
>     if [[ -f $CODE_SERVER_TOKENFILE ]]; then
>         rm $CODE_SERVER_TOKENFILE
>     fi
> 
>     echo "Creating code server token file $CODE_SERVER_TOKENFILE"
>     touch $CODE_SERVER_TOKENFILE
>     chmod 600 $CODE_SERVER_TOKENFILE
> 
[info] (ssh_tunnel) stdout:     CODE_SERVER_CONNECTION_TOKEN="f4b1a0f5-d7ec-4ba1-b302-d4fdc80bd773"
>     echo $CODE_SERVER_CONNECTION_TOKEN > $CODE_SERVER_TOKENFILE
> 
> 
<e manually inject it into the extension host later.
> 
<s from being used across ALL connections by default
> 
>     # Backing it up, NOT exporting it
>     if [[ -n "$SSH_AUTH_SOCK" ]]; then
>         ORIGINAL_SSH_AUTH_SOCK=$SSH_AUTH_SOCK
>         unset SSH_AUTH_SOCK
>     fi
> 
>     # Pass the port range directly to code server (or 0 for OS selection)
>     CODE_SERVER_PORT_ARG="${PORT_RANGE:-0}"
> 
> 
<ept-server-license-terms &> $CODE_SERVER_LOGFILE &"
> 
> 
<cept-server-license-terms &> $CODE_SERVER_LOGFILE &
>     echo $! > $CODE_SERVER_PIDFILE
> 
<IDFILE) and wrote pid to file $CODE_SERVER_PIDFILE"
> 
>     # Restoring the original SSH_AUTH_SOCK
>     if [[ -n "$ORIGINAL_SSH_AUTH_SOCK" ]]; then
>         export SSH_AUTH_SOCK=$ORIGINAL_SSH_AUTH_SOCK
>         unset ORIGINAL_SSH_AUTH_SOCK
>     fi
> else
> 
<Running processes are $CODE_SERVER_RUNNING_PROCESS"
> fi
Code server script is not running
Creating code server token file /run/user/2342/cursor-remote-code.token.ef11e3312548c10c1b59713f964cb812
Starting code server script /home/name/.cursor-server/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770/bin/cursor-server --start-server --host=127.0.0.1 --port 0  --connection-token-file /run/user/2342/cursor-remote-code.token.ef11e3312548c10c1b59713f964cb812 --telemetry-level off --enable-remote-auto-shutdown --accept-server-license-terms &> /run/user/2342/cursor-remote-code.log.ef11e3312548c10c1b59713f964cb812 &
[3] 1427977
Code server started with PID 1427977 and wrote pid to file /run/user/2342/cursor-remote-code.pid.ef11e3312548c10c1b59713f964cb812
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<4802120:~$ if [[ -f $CODE_SERVER_TOKENFILE ]]; then
>     CODE_SERVER_CONNECTION_TOKEN="$(cat $CODE_SERVER_TOKENFILE)"
> else
> 
<erver token file not found: $CODE_SERVER_TOKENFILE"
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<echo "Code server log file is $CODE_SERVER_LOGFILE"
Code server log file is /run/user/2342/cursor-remote-code.log.ef11e3312548c10c1b59713f964cb812
(base) name@ubuntu-DeepLearning-4802120:~$ for i in {1..180}; do
>     if [[ -f $CODE_SERVER_LOGFILE ]]; then
> 
<+' | sed 's/Extension host agent listening on //')"
>         if [[ -n "$CODE_LISTENING_ON" ]]; then
>             break
>         fi
>     fi
>     sleep 0.5
> done

[info] (ssh_tunnel) stdout: (base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<g-4802120:~$ if [[ -z "$CODE_LISTENING_ON" ]]; then
> 
[info] (ssh_tunnel) stdout:     echo "Error code server did not start successfully"
>     # Reading the logfile, to help with debugging
>     ls -al $CODE_SERVER_LOGFILE || true
> 
[info] (ssh_tunnel) stdout:     cat $CODE_SERVER_LOGFILE || true
> 
< 1 "Code server did not start successfully" "false"
> fi
(base) name@ubuntu-DeepLearning-4802120:~$ 
(base) name@ubuntu-DeepLearning-4802120:~$ 
<pLearning-4802120:~$ print_install_results_and_wait

[info] (ssh_tunnel) stdout: 56284375419e16563f0b7b1c: start
exitCode==0==
nodeExecutable==/home/name/.cursor-server/bin/56f0a83df8e9eb48585fcc4858a9440db4cc7770/node==
errorMessage====
isFatalError==false==
multiplexListeningOn==45363==
multiplexConnectionToken==cff3754c-de82-4df6-ae34-44f359fd1d87==
codeListeningOn==33911==
codeConnectionToken==f4b1a0f5-d7ec-4ba1-b302-d4fdc80bd773==
detectedPlatform==linux==
arch==x64==
SSH_AUTH_SOCK====
56284375419e16563f0b7b1c: end

[info] (ssh_tunnel) stdout: Unlocking /run/user/2342/cursor-remote-lock.ef11e3312548c10c1b59713f964cb812

[info] (ssh_tunnel) stdout: [1]   Terminated              while [ $counter -lt 900 ]; do
    date +%s > "$lockfile"; sleep 1; counter=$((counter + 1));
done

[info] (ssh_tunnel) stdout:  
***********************************************************************
* This terminal is used to establish and maintain the SSH connection. *
* Closing this terminal will terminate the connection and disconnect  *
* Cursor from the remote server.                                      *
***********************************************************************

[info] (ssh_tunnel) stdout: [2]-  Done                    $SERVER_NODE_EXECUTABLE "$MULTIPLEX_SERVER_SCRIPT" "$MULTIPLEX_SERVER_CONNECTION_TOKEN" "$MULTIPLEX_SERVER_PORT_ARG" &> $MULTIPLEX_SERVER_LOGFILE
[3]+  Done                    $CODE_SERVER_SCRIPT --start-server --host=127.0.0.1 --port $CODE_SERVER_PORT_ARG --connection-token-file $CODE_SERVER_TOKENFILE --telemetry-level off --enable-remote-auto-shutdown --accept-server-license-terms &> $CODE_SERVER_LOGFILE
Code server process 1427977 died
Multiplex server process 1427934 died
exit


I meet the same problem. Are there any solutions?

Thanks for reporting - I’ve raised this with the extensions team.

It looks like you’re connecting through JumpServer (bastion host). If possible, testing a direct SSH connection to the target machine would help confirm whether the issue is specific to the JumpServer environment.

This topic was automatically closed 22 days after the last reply. New replies are no longer allowed.