After the recent upgrade of Cursor, the Remote-SSH plugin is unable to enable. The issue seems to occur during the download of the Remote-SSH server, where there is no response. Below are the logs:
[10:46:32.120] [server] Checking /home/users/shiwei01.yang/.cursor-server/cli/servers/Stable-48d735e3dec42accfdf71efabf00bb49e242b880/log.txt and /home/users/shiwei01.yang/.cursor-server/cli/servers/Stable-48d735e3dec42accfdf71efabf00bb49e242b880/pid.txt for a running server...
[10:46:35.484] [server] Installing and setting up Cursor Server...
My SSH machines cannot access external networks, and I suspect this might be the reason. However, previous upgrades worked perfectly without issues.
Is there a way to manually download and install the necessary components to resolve this issue?
Enviroments
version: 0.43.4
commit: 1.93.1
date: 48d735e3dec42accfdf71efabf00bb49e242b880
Electron: 2024-11-26T00:13:53.586Z
ElectronBuildId: 30.5.1
Chromium: undefined
Node.js: 124.0.6367.243
V8: 20.16.0
OS: 12.4.254.20-electron.0
Josoen
December 9, 2024, 8:35am
2
same question, the cusor-server folder structure is different with vscode-server, I have no idea about how to install the update manually
biswa
February 5, 2025, 7:44am
3
I am also facing the same issue,
[13:10:14.362] Got request to download on client for {"artifact":"cli-linux-armhf","destPath":"/home/iotuser/.cursor-server/vscode-cli-cce0110ca40ceb61e76ecea08d24210123895320.tar.gz"}
[13:10:14.363] server download URL: https://cursor.blob.core.windows.net/remote-releases/cce0110ca40ceb61e76ecea08d24210123895320/cli-linux-armhf.tar.gz
[13:10:14.363] Downloading VS Code server locally...
[13:10:14.382] >
>
[13:10:14.656] Resolver error: Error: Failed to download VS Code Server (Server returned 404)
Hey, I’m not sure if the Remote SSH server supports ARMHF Linux distributions right now!
This could just be that the wrong version is installed in Cursor, so try removing the Remote SSH extensions, and downloading either Open Remote SSH, or Remote SSH, whichever you find first!
Any update for this problem?
In the recent updates across multiple versions, I have not encountered the issue anymore. The machine I originally couldn’t download from was not allowed to connect to external networks. Therefore, I found a Linux machine that could connect to external networks, connected to Cursor, and then copied the relevant content to my target machine to resolve the problem.
I would prefer if the official team could provide a place to manually download the corresponding version components.
ShayS
March 6, 2025, 8:33pm
7
I made a script to upload the Cursor server to offline Linux servers. I use m1 mac.
#!/bin/bash
# =========================================================
# Cursor Remote Server Update Script
# Used to download Cursor server files locally and then upload them to a remote Linux server
# =========================================================
# ==================== Local Configuration ====================
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
LOCAL_DOWNLOAD_DIR="$SCRIPT_DIR/cursor_downloads" # Local download directory
# Remote server configuration
REMOTE_PORT=22 # SSH port
REMOTE_USER="root" # Remote username
REMOTE_HOST="mycloud.com" # Remote host
# ==================== Target Architecture Configuration ====================
# Local architecture - determines which version you want to download locally
# Possible values: "x64" or "arm64"
# - x64: For Intel-based Macs
# - arm64: For Apple Silicon (M1/M2/M3) based Macs
LOCAL_ARCH="arm64"
# Remote architecture - determines which version you want to use on the remote server
# Possible values: "x64" or "arm64"
# - x64: For Intel/AMD servers (most common)
# - arm64: For ARM-based servers (e.g., AWS Graviton)
REMOTE_ARCH="x64"
# Remote operating system - usually Linux
# Possible values: "linux"
# Note: Cursor server currently mainly supports Linux
REMOTE_OS="linux"
# ==================== Script Functions ====================
# Output colored messages
print_message() {
local color=$1
local message=$2
case $color in
"green") echo -e "\033[0;32m$message\033[0m" ;;
"red") echo -e "\033[0;31m$message\033[0m" ;;
"yellow") echo -e "\033[0;33m$message\033[0m" ;;
"blue") echo -e "\033[0;34m$message\033[0m" ;;
*) echo "$message" ;;
esac
}
# Check if a command exists
check_command() {
if ! command -v $1 &> /dev/null; then
print_message "red" "Error: Command '$1' not found, please install it first."
exit 1
fi
}
# Get Cursor version information
get_cursor_version() {
if ! command -v cursor &> /dev/null; then
print_message "red" "Error: 'cursor' command not found. Please ensure Cursor is installed."
exit 1
fi
print_message "blue" "Fetching Cursor version information..."
# Run cursor --version and capture the output
local version_info=$(cursor --version)
# Use regex to extract version, commit hash, and architecture
CURSOR_VERSION=$(echo "$version_info" | sed -n '1p')
CURSOR_COMMIT=$(echo "$version_info" | sed -n '2p')
CURSOR_ARCH=$(echo "$version_info" | sed -n '3p')
print_message "green" "Retrieved Cursor information:"
print_message "green" " Version: $CURSOR_VERSION"
print_message "green" " Commit: $CURSOR_COMMIT"
print_message "green" " Architecture: $CURSOR_ARCH"
}
# Download Cursor server
download_cursor_server() {
print_message "blue" "Preparing to download Cursor server..."
# Create download directory
mkdir -p "$LOCAL_DOWNLOAD_DIR"
# Build download URL
DOWNLOAD_URL="https://cursor.blob.core.windows.net/remote-releases/${CURSOR_VERSION}-${CURSOR_COMMIT}/vscode-reh-${REMOTE_OS}-${REMOTE_ARCH}.tar.gz"
# Set download filename
DOWNLOAD_FILENAME="cursor-server-${CURSOR_VERSION}-${CURSOR_COMMIT}-${REMOTE_OS}-${REMOTE_ARCH}.tar.gz"
DOWNLOAD_PATH="$LOCAL_DOWNLOAD_DIR/$DOWNLOAD_FILENAME"
print_message "yellow" "Download URL: $DOWNLOAD_URL"
print_message "yellow" "Downloading to: $DOWNLOAD_PATH"
# Download the file
if curl -L "$DOWNLOAD_URL" -o "$DOWNLOAD_PATH"; then
print_message "green" "Cursor server downloaded successfully!"
else
print_message "red" "Download failed!"
exit 1
fi
}
# Upload and deploy Cursor server to remote host
deploy_to_remote() {
print_message "blue" "Preparing to upload to remote server..."
# Build SSH command prefix
SSH_CMD="ssh -p $REMOTE_PORT ${REMOTE_USER}@${REMOTE_HOST}"
SCP_CMD="scp -P $REMOTE_PORT"
# Ensure remote directory exists
print_message "yellow" "Creating remote directory structure..."
$SSH_CMD "mkdir -p ~/.cursor-server/cli/servers/Stable-${CURSOR_COMMIT}/server/"
# Upload the file
print_message "yellow" "Uploading server files to remote host..."
$SCP_CMD "$DOWNLOAD_PATH" "${REMOTE_USER}@${REMOTE_HOST}:~/.cursor-server/cursor-server.tar.gz"
if [ $? -ne 0 ]; then
print_message "red" "Upload failed!"
exit 1
fi
# Extract the file
print_message "yellow" "Extracting files on remote host..."
$SSH_CMD "tar -xzf ~/.cursor-server/cursor-server.tar.gz -C ~/.cursor-server/cli/servers/Stable-${CURSOR_COMMIT}/server/ --strip-components=1"
if [ $? -ne 0 ]; then
print_message "red" "Extraction failed!"
exit 1
fi
# Clean up temporary files
print_message "yellow" "Cleaning up remote temporary files..."
$SSH_CMD "rm ~/.cursor-server/cursor-server.tar.gz"
print_message "green" "Deployment complete! Server files have been successfully installed on the remote host."
print_message "green" "Remote server path: ~/.cursor-server/cli/servers/Stable-${CURSOR_COMMIT}/server/"
}
# ==================== Main Program ====================
# Check necessary commands
check_command "curl"
check_command "ssh"
check_command "scp"
# Get Cursor version information
get_cursor_version
# Download Cursor server
download_cursor_server
# Confirm upload
print_message "blue" "Preparing to upload to remote server ${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_PORT}"
print_message "yellow" "Continue? [y/N]: "
read -r confirmation
if [[ $confirmation =~ ^[Yy]$ ]]; then
deploy_to_remote
else
print_message "yellow" "Upload canceled. Files have been downloaded locally: $DOWNLOAD_PATH"
fi
print_message "green" "Script execution complete!"
8 Likes
Thank you ! It is just what I want
Cyfine
April 1, 2025, 8:11am
9
Thx, that really helps a lot!
After removing .cursor-server
folder of remove server, I run this script again and it works. Thank you!