Ssh connection with remote windows server

Describe the Bug

Connection to Cursor server failed: Failed to install the Cursor Server. Please check the logs for more details.

Steps to Reproduce

After add the ssh info in config, and then try connection in new window.

Operating System

Windows 10/11

Current Cursor Version (Menu → About Cursor → Copy)

Version: 1.1.7 (user setup)
VSCode Version: 1.96.2
Commit: 7111807980fa9c93aedd455ffa44b682c0dc1350
Date: 2025-07-01T07:38:05.103Z
Electron: 34.5.1
Chromium: 132.0.6834.210
Node.js: 20.19.0
V8: 13.2.152.41-electron.0
OS: Windows_NT x64 10.0.26100

Additional Information

I can connect ssh using vscode in same way but fail every times in cursor. Thank you for your help.

Does this stop you from using Cursor

No - Cursor works, but with this issue

same issue. The server binary is 404ing. I would like to use cursor over a web browser from other platforms but am unable to :frowning:

@Xilliam_Hall – Could you share the “Remote - SSH” logs so we can take a look?

Hi @kevcube – If the server binary is not found, it sounds like you might be on the VSCode SSH extension. Could you try switching to the Anysphere Remote SSH extension?

Thanks for the reply. My issue is not actually related to any ssh plugins. Not to hijack but I made my own thread here Cursor CLI `serve-web` can't download server binary

@ravirahman Please also enable the existing vscode ssh. Internal network access cannot be accessed by anysphere. Anysphere ssh should not attempt to download something from an external website to the internal network.

@df-korea I believe this cannot be done because Microsoft is not allowing cursor to use some services that were built for VSCode.

@df-korea, unfortunately, the VSCode ssh extension is not supported in Cursor. Both VSCode and Cursor do need to download a server onto your remote machine in order to enable remote SSH. We’ll attempt to copy the file over SSH/SCP if the remote download fails, but this is much slower than downloading the file directly.

@ravirahman When will ‘cursor ssh’ be modified to allow SSH connections to the internal network? Please provide an update on this.

Mode LastWriteTime Length Name


d----- 2025/7/4 10:27 7111807980fa9c93aedd455ffa44b682c0dc1350

PS C:\Users\Administrator> cd $SERVER_DIR
PS C:\Users\Administrator.cursor-server\bin\7111807980fa9c93aedd455ffa44b682c0dc1350>
2025-07-04 10:27:04.147 [info] (ssh_tunnel) stdout: acquireLock
Acquiring lock C:\Users\Administrator.cursor-server\bin\7111807980fa9c93aedd455ffa44b682c0dc1350\cursor-remote.lock

2025-07-04 10:27:04.147 [info] (ssh_tunnel) stdout: Lock acquired

2025-07-04 10:27:04.149 [info] (ssh_tunnel) stdout: PS C:\Users\Administrator.cursor-server\bin\7111807980fa9c93aedd455ffa44b682c0dc1350>
2025-07-04 10:27:04.149 [info] (ssh_tunnel) stdout: try {

2025-07-04 10:27:04.151 [info] (ssh_tunnel) stdout: >> i
2025-07-04 10:27:04.164 [info] (ssh_tunnel) stdout: f(!(Test-Path $SERVER_SCRIPT)) {

del cursor-server.tar.gz
if(Test-Path “$(Resolve-Path ~).cursor-server\cursor-server-171605b4-78e4-4d11-b67d-72eb237f7414.tar.gz”) {
“Found existing server archive at $(Resolve-Path ~).cursor-server\cursor-server-171605b4-78e4-4d11-b67d-72eb237f7414.tar.gz, using it instead of downloading”
Move-Item “$(Resolve-Path ~).cursor-server\cursor-server-171605b4-78
2025-07-04 10:27:04.165 [info] (ssh_tunnel) stdout: e4-4d11-b67d-72eb237f7414.tar.gz” “cursor-server.tar.gz”
} else {
if($false -eq $true) {
“Server not found at $(Resolve-Path ~).cursor-server\cursor-server-171605b4-78e4-4d11-b67d-72eb237f7414.tar.gz, and remote down
2025-07-04 10:27:04.165 [info] (ssh_tunnel) stdout: load is disabled”
printInstallResultsAndExitClean 1 “Download failed: Failed to copy server from local client” “true”
}

“Downloading server from $downloadUrl”

2025-07-04 10:27:04.178 [info] (ssh_tunnel) stdout: $REQUEST_ARGUMENTS = @{

Uri=“$downloadUrl”
TimeoutSec=20
OutFile=“cursor-server.tar.gz”
UseBasicParsing=$True
}

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
try {
Invoke-RestMethod @REQUEST_ARGUMENTS
} catch {
“Error downloading server: $($.ToString())"
printInstallResultsAndExitClean 1 "Download failed: Failed to download server: $($
.ToString())” “false”
}

}
2025-07-04 10:27:04.178 [info] (ssh_tunnel) stdout:

if(Test-Path “cursor-server.tar.gz”) {
tar -xf cursor-server.tar.gz --strip-components 1
del cursor-server.tar.gz
}

if(!(Test-Path $SERVER_SCRIPT)) {
“Error while installing the server binary $SERVER_SCRIPT”
exit 1
}

}

else {
“Server script already installed in $SERVER_SCRIPT”
}

if(Get-Process node -ErrorAction SilentlyContinue | Where-Object Path -Like “$SE
2025-07-04 10:27:04.179 [info] (ssh_tunnel) stdout: R
2025-07-04 10:27:04.179 [info] (ssh_tunnel) stdout: VER_DIR*”) {
“Server script is already running $SERVER_SCRIPT”
}

e
2025-07-04 10:27:04.181 [info] (ssh_tunnel) stdout: lse {
“Starting server $SERVER_SCRIPT”
i
2025-07-04 10:27:04.194 [info] (ssh_tunnel) stdout: f(Test-Path $SERVER_LOGFILE) {
del $SERVER_LOGFILE
}

if(Test-Path $SERVER_PIDFILE) {
del $SERVER_PIDFILE
}

if(Test-Path $SERVER_TOKENFILE) {
del $SERVER_TOKENFILE
}

$SERVER_CONNECTION_TOKEN=“895a7be4-2349-4269-8bd5-846acc461f80”
[System.IO.File]::WriteAllLines($SERVER_TOKENFILE, $SERVER_CONNECTION_TOKEN)
$SCRIPT_ARGUMENTS=“–start-server --host=127.0.0.1 $SERVER_LISTEN_FLAG $SERVER_INITIAL_EXTENSIONS --connection-token-file $SERVER_TOKENFILE --telemetry-level off --enable-remote-auto-shutdown --accept-server-license-terms *> ‘$SERVER_LOGFILE’”
$START_ARGUMENTS = @{
FilePath = “powershell.exe”
WindowStyle = “hidden”
ArgumentList = @(
“-ExecutionPolicy”, “Unrestricted”, “-NoLogo”, “-N
2025-07-04 10:27:04.194 [info] (ssh_tunnel) stdout: oProfile”, “-NonInteractive”, “-c”, “$SERVER_SCRIPT $SCRIPT_A
2025-07-04 10:27:04.208 [info] (ssh_tunnel) stdout: RGUMENTS” )
PassThru = $True
}

$SERVER_ID = (start @START_ARGUMENTS).ID
if($SERVER_ID) {
[System.IO.File]::WriteAllLines($SERVER_PIDFILE, $SERVER_ID)
}

}

if(Test-Path $SERVER_TOKENFILE) {
$SERVER_CONNECTION_TOKEN=“$(cat $SERVER_TOKENFILE)”
}

else {
“Error server token file not found $SERVER_TOKENFILE”
printInstallResultsAndExitClean 1 “Error server token file not found $SERVER_TOKENFILE” “false”
}

sleep -Milliseconds 500
$SELECT_ARGUMENTS = @{
Path = $SERVER_LOGFILE
Pattern = “Extension host agen
2025-07-04 10:27:04.209 [info] (ssh_tunnel) stdout: t listening on (\d+)”
}

2025-07-04 10:27:04.209 [info] (ssh_tunnel) stdout: f
2025-07-04 10:27:04.224 [info] (ssh_tunnel) stdout: or($I = 1; $I -le 40; $I++) {

“Checking for server port from log file $SERVER_LOGFILE”
if(Test-Path $SERVER_LOGFILE) {
$GROUPS = (Select-String @SELECT_ARGUMENTS).Matches.Groups
if($GROUPS) {
$LISTENING_ON = $GROUPS[1].Value
“Listening on port: $LISTENING_ON”
break
}

}

sleep -Milliseconds 500
}

} finally {
$lockFile.Close()
}

2025-07-04 10:27:04.377 [info] (ssh_tunnel) stdout: Downloading server from https://cursor.blob.core.windows.net/remote-releases/7111807980fa9c93aedd455ffa44b682c0dc1350/vscode-reh-win32-x64.tar.gz

2025-07-04 10:27:04.378 [info] (ssh_tunnel) stderr: del : �Ҳ���·����C:\Users\Administrator.cursor-server\bin\7111807980fa9c93aedd455ffa44b682c0dc1350\cursor-server.tar.
gz������Ϊ��·�������ڡ�
����λ�� ��:3 �ַ�: 1

  • del cursor-server.tar.gz
    • CategoryInfo : ObjectNotFound: (C:\Users\Admini…r-server.tar.gz:String) [Remove-Item], ItemNotFoundEx
      ception
    • FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.RemoveItemCommand

Thanks for your reply. I guess this is the log we need for further look. I have switched to Anysphere remote ssh extension but the connection problem still existed.

cursor-server.tar.gz << this is terrible

Oh, I see. Do you know how to solve this issue? Thank you for your guidance.

@Xilliam_Hall I’ve tried many ways, but there’s no way I can use cursor ssh on my inner network. There’s no solution.

Hi! We have no idea about how to fix this bug. The windows servers try to download some config from linux format. Can you help me with it? Thanks a lot!

@Xilliam_Hall I upgraded to the latest version of ssh and it works fine. @ravirahman thank you!

Yes, it works fine now. Thank you!

@ravirahman I can access the internal network with the ssh upgrade, but I can’t download extension from marketplace on the internal network. This also seems to be a problem because I want to download it directly from the internal network, can it be solved?

The download will be quite slow if it has to download it locally and copy it over.