Repository navigation
Open
microsoft/vscode
#328660Labels
sshIssue in vscode-remote SSHIssue in vscode-remote SSH
Description
Is there an existing issue for this bug?
- I have searched the existing open issues and found none that apply.
- If I find any issue of interest that is related or closed, I will included a link to it in this issue.
Required Troubleshooting Steps
- I have read and performed the troubleshooting steps
- I have tried both values of the
remote.SSH.useLocalServersetting - My issue was not covered in the Tips and Tricks linked from the Troubleshooting Wiki.
- I will include a complete copy of my Remote - SSH logs by running Remote-SSH: Show Log in the command palette or from View > Output in the menu bar
[Optional] Diagnose with Copilot
I did not ask the @remote-ssh participant for help
In step 2 of the troubleshooting wiki, what was the result of running the generated SSH command verbatim outside of VS Code?
I COULD successfully SSH to the remote machine with the generated SSH command
Remote-SSH Log
Remote-SSH Log
[12:48:44.125] Log Level: 2
[12:48:44.139] VS Code version: 1.107.1
[12:48:44.139] Remote-SSH version: remote-ssh@0.122.0
[12:48:44.139] darwin arm64
[12:48:44.145] SSH Resolver called for "ssh-remote+windows", attempt 1
[12:48:44.149] remote.SSH.useLocalServer = true
[12:48:44.149] remote.SSH.useExecServer = true
[12:48:44.149] remote.SSH.bindHost = {}
[12:48:44.149] remote.SSH.path =
[12:48:44.150] remote.SSH.configFile =
[12:48:44.150] remote.SSH.useFlock = true
[12:48:44.150] remote.SSH.lockfilesInTmp = false
[12:48:44.151] remote.SSH.localServerDownload = auto
[12:48:44.151] remote.SSH.remoteServerListenOnSocket = false
[12:48:44.151] remote.SSH.defaultExtensions = ["ms-python.python","ms-python.vscode-pylance"]
[12:48:44.151] remote.SSH.defaultExtensionsIfInstalledLocally = []
[12:48:44.151] remote.SSH.loglevel = 2
[12:48:44.151] remote.SSH.maxReconnectionAttempts = 2
[12:48:44.151] remote.SSH.enableDynamicForwarding = true
[12:48:44.151] remote.SSH.enableRemoteCommand = false
[12:48:44.151] remote.SSH.serverPickPortsFromRange = {}
[12:48:44.152] remote.SSH.serverInstallPath = {}
[12:48:44.152] remote.SSH.permitPtyAllocation = false
[12:48:44.152] remote.SSH.preferredLocalPortRange = undefined
[12:48:44.152] remote.SSH.useCurlAndWgetConfigurationFiles = false
[12:48:44.152] remote.SSH.experimental.chat = true
[12:48:44.152] remote.SSH.experimental.enhancedSessionLogs = true
[12:48:44.152] remote.SSH.httpProxy = {"*":""}
[12:48:44.152] remote.SSH.httpsProxy = {"*":""}
[12:48:44.160] SSH Resolver called for host: windows
[12:48:44.160] Setting up SSH remote "windows"
[12:48:44.166] Acquiring local install lock: /var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-remote-ssh-d59726ea-install.lock
[12:48:44.168] Looking for existing server data file at /Users/tekumara/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-d59726ea-994fd12f8d3a5aa16f17d42c041e5809167e845a-0.122.0-es/data.json
[12:48:44.169] Found existing data file
[12:48:44.169] Found local server running: {"remoteListeningOn":{"port":60468},"osReleaseId":"windows","arch":"x64","sshAuthSock":"","platform":"windows","execServerToken":"1f5848b1-f677-423b-8af8-5163a2228d94","pid":73828,"ipcHandlePath":"/var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-ssh-askpass-feb6f15e39f2dfd0bc44c14caa724bca1ded23b5.sock","socksPort":49183,"startupTime":1767404550505}
[12:48:44.175] Found running server - short-circuiting install
[12:48:44.177] Starting forwarding server. local port 50121 -> socksPort 49183 -> remotePort 60468
[12:48:44.179] Forwarding server listening on port 50121
[12:48:44.179] Waiting for ssh tunnel to be ready
[12:48:44.180] [Forwarding server port 50121] Got connection 0
[12:48:44.181] Tunneled port 60468 to local port 50121
[12:48:44.181] Resolved "ssh-remote+windows" to "port 50121"
[12:48:44.186] Initizing new exec server for ssh-remote+windows
[12:48:44.186] Resolving exec server at port 50121
[12:48:44.187] [Forwarding server port 50121] Got connection 1
[12:48:44.226] Exec server for ssh-remote+windows created and cached
[12:48:44.226] Extensions to install: ms-python.python, ms-python.vscode-pylance
[12:48:44.230] ------
[12:48:44.231] No hints found in the recent session.
[12:48:44.314] [server] Checking C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\log.txt and C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\pid.txt for a running server...
[12:48:44.315] [server] Found running server (pid=4512)
[12:48:44.320] [server] Installing extensions...
[12:48:44.589] [server] Checking C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\log.txt and C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\pid.txt for a running server...
[12:48:44.589] [server] Found running server (pid=4512)
[12:48:44.590] [server] Installing extensions...
[12:48:44.693] [server] Checking C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\log.txt and C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\pid.txt for a running server...
[12:48:44.693] [server] Found running server (pid=4512)
[12:48:44.693] [server] Installing extensions...
[12:48:44.695] ------
[12:48:44.695] SSH Resolver called for "ssh-remote+windows", attempt 2, (Reconnection)
[12:48:44.696] SSH Resolver called for host: windows
[12:48:44.696] Setting up SSH remote "windows"
[12:48:44.697] Acquiring local install lock: /var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-remote-ssh-d59726ea-install.lock
[12:48:44.698] Looking for existing server data file at /Users/tekumara/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-d59726ea-994fd12f8d3a5aa16f17d42c041e5809167e845a-0.122.0-es/data.json
[12:48:44.699] Found existing data file
[12:48:44.699] Found local server running: {"remoteListeningOn":{"port":60468},"osReleaseId":"windows","arch":"x64","sshAuthSock":"","platform":"windows","execServerToken":"1f5848b1-f677-423b-8af8-5163a2228d94","pid":73828,"ipcHandlePath":"/var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-ssh-askpass-feb6f15e39f2dfd0bc44c14caa724bca1ded23b5.sock","socksPort":49183,"startupTime":1767404550505}
[12:48:44.699] Running server is stale. Ignoring
[12:48:44.699] Using commit id "994fd12f8d3a5aa16f17d42c041e5809167e845a" and quality "stable" for server
[12:48:44.700] Extensions to install: ms-python.python, ms-python.vscode-pylance
[12:48:44.705] Install and start server if needed
[12:48:44.708] PATH: ...
[12:48:44.708] Checking ssh with "ssh -V"
[12:48:44.723] > OpenSSH_10.0p2, LibreSSL 3.3.6
[12:48:44.726] askpass server listening on /var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-ssh-askpass-978e31c971f71ebb2e52857a4d56281c10a19205.sock
[12:48:44.727] Spawning local server with {"serverId":1,"ipcHandlePath":"/var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-ssh-askpass-79d35f013ba9e613d3d66ef7cdcb3f96fa7db9e2.sock","sshCommand":"ssh","sshArgs":["-v","-T","-D","50127","-o","ConnectTimeout=60","windows","powershell"],"serverDataFolderName":".vscode-server","dataFilePath":"/Users/tekumara/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-d59726ea-994fd12f8d3a5aa16f17d42c041e5809167e845a-0.122.0-es/data.json"}
[12:48:44.727] Local server env: {"SSH_AUTH_SOCK":"/private/tmp/com.apple.launchd.bg3s6t7420/Listeners","SHELL":"/bin/zsh","DISPLAY":"1","ELECTRON_RUN_AS_NODE":"1","SSH_ASKPASS":"/Users/tekumara/.vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/local-server/askpass.sh","VSCODE_SSH_ASKPASS_NODE":"/Applications/Visual Studio Code.app/Contents/Frameworks/Code Helper (Plugin).app/Contents/MacOS/Code Helper (Plugin)","VSCODE_SSH_ASKPASS_EXTRA_ARGS":"","VSCODE_SSH_ASKPASS_MAIN":"/Users/tekumara/.vscode/extensions/ms-vscode-remote.remote-ssh-0.122.0/out/askpass-main.js","VSCODE_SSH_ASKPASS_HANDLE":"/var/folders/5y/hhvf46cx393_j75q4gm7tvzw0000gq/T/vscode-ssh-askpass-978e31c971f71ebb2e52857a4d56281c10a19205.sock"}
[12:48:44.728] Spawned 76673
[12:48:44.729] Using connect timeout of 62 seconds
[12:48:44.846] > local-server-1> Running ssh connection command: ssh -v -T -D 50127 -o ConnectTimeout=60 windows powershell
[12:48:44.848] > local-server-1> Spawned ssh, pid=76681
[12:48:46.431] stderr> debug1: Server host key: ssh-ed25519 SHA256:q1uMM4sdD/YBS+ZBe636bLJXfwFtaAhSjGTEgCwmTFU
[12:48:46.644] stderr> Authenticated to beebop.local ([192.168.68.112]:22220) using "publickey".
[12:48:48.965] > Windows PowerShell
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows
[12:48:49.181] Exec server for ssh-remote+windows closed (gracefully)
[12:48:51.021] > PS C:\Users\Quickemu>
[12:48:51.362] > echo 'ready: 98a5ea234621'
[12:48:52.493] > ready: 98a5ea234621
[12:48:52.531] > PS C:\Users\Quickemu>
[12:48:52.534] > uname -rsv
[12:48:52.830] > MSYS_NT-10.0-26200 3.6.5-22c95533.x86_64 2025-10-10 12:02 UTC
[12:48:52.831] Platform: windows
[12:48:52.831] Remote command length: 6676/8192 characters
[12:48:52.837] > PS C:\Users\Quickemu>
[12:48:52.841] > powershell -NoProfile
[12:48:53.046] > Windows PowerShell
> Copyright (C) Microsoft Corporation. All rights reserved.
>
> Install the latest PowerShell for new features and improvements! https://aka.ms/PSWindows
[12:48:53.047] >
[12:48:54.889] > PS C:\Users\Quickemu>
[12:48:55.397] > powershell -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive -Command "`$remoteSSHConfigurationScript=[Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes([Text.Encoding]::UTF8.GetString([Con
[12:48:55.399] > vert]::FromBase64String('CiR1dWlkPSI5OGE1ZWEyMzQ2MjEiCiIke3V1aWR9OiBydW5uaW5nIgoiOThhNWVhMjM0NjIxOiBwYXVzZUxvZyIKJFByb2dyZXNzUHJlZmVyZW5jZT0nU2lsZW50bHlDb250aW51ZScKJHJfPSc5OTRmZDEyZjhkM2E1YWExNmYxN2Q0MmMwNDFlNTgwOTE2N2U4NDVhJwokcD0kZW52OlBST0NFU1NPUl9BUkNISVRFQ1RVUkUKJGFyY2g9JycKaWYgKCRwIC1lcSAnQU1ENjQnIC1vciAkcCAtZXEgJ0lBNjQnKSB7CiRhcmNoPSd4NjQnCn0gZWxzZWlmICgkcCAtZXEgJ0FSTTY0JykgewokYXJjaD0nYXJtNjQnCn0KaWYgKCRhcmNoIC1lcSAnJykgewoiVW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlICckcCcuIgpxIDE5Ngp9CmlmICgnJyAtbmUgJycpIHsKJGVudjpodHRwX3Byb3h5ID0gJycKfQppZiAoJycgLW5lICcnKSB7CiRlbnY6aHR0cHNfcHJveHkgPSAnJwp9CiRzXz0oSm9pbi1QYXRoIChSZXNvbHZlLVBhdGggfikgJy52c2NvZGUtc2VydmVyJykKJGNsaURhdGFEaXI9KEpvaW4tUGF0aCAiJHNfIiAnY2xpJykKJGVudjpWU0NPREVfQUdFTlRfRk9MREVSPSRzXwokbG9nPU5ldy1UZW1wb3JhcnlGaWxlCiRjXz0iY29kZSIKJGRfPSIkY18uZXhlIgokZV89IiRjXy0kcl8uZXhlIgokZl89
[12:48:55.405] > IiRzX1wkZV8iCiR0Xz0nc3RhYmxlJwoka189JFRydWUKJGxfPSRGYWxzZQokZ2xvYmFsOnZfID0gJEZhbHNlCiRnbG9iYWw6d18gPSAnJwokZ2xvYmFsOm5fID0gJycKJGdsb2JhbDpvXyA9ICcnCiRnbG9iYWw6cF8gPSAnJwokZ2xvYmFsOnFfID0gJycKZnVuY3Rpb24gYWtfIHsKImxpc3RlbmluZ09uPT0kcG9ydD09Igoib3NSZWxlYXNlSWQ9PXdpbmRvd3M9PSIKIm9zVmVyc2lvbj09JGFpXz09IgoiYXJjaD09JGFyY2g9PSIKInBsYXRmb3JtPT13aW5kb3dzPT0iCiJ1bnBhY2tSZXN1bHQ9PSR3Xz09IgoiZGlkTG9jYWxEb3dubG9hZD09JHZfPT0iCiJkb3dubG9hZFRpbWU9PSRuXz09IgoiaW5zdGFsbFRpbWU9PSRvXz09IgoiZXh0SW5zdGFsbFRpbWU9PSRwXz09Igoic2VydmVyU3RhcnRUaW1lPT0kcV89PSIKImV4ZWNTZXJ2ZXJUb2tlbj09MDYyZmQ4MjUtYzQzZC00ZDQ1LTg4ZGEtYzVlY2YyNjI5NzJjPT0iCn0KZnVuY3Rpb24gbV8gewpyZXR1cm4gW3N5c3RlbS5kaWFnbm9zdGljcy5zdG9wd2F0Y2hdOjpTdGFydE5ldygpOwp9CmZ1bmN0aW9uIHEoJGNvZGUpIHsKIiR7dXVpZH06IHN0YXJ0IgoiZXhpdENvZGU9PSRjb2RlPT0iCmFrXwoiJHt1dWlkfTogZW5kIgp9CmZ1bmN0aW9uIGFfIHsKJHhfPSRQSUQKd2hpbGUgKCRUcnVlKSB7CiR5Xz0oZ2NpbSB3aW4zMl9wcm9jZXNzIHwgPyBwcm9jZXNzaWQgLWVxICR4XykucGFyZW50cHJvY2Vzc2lkCmlmICghJHlfKSB7CiJubyBzc2hkIHBhcmVudCBwcm9jIgpleGl0IDAKfQppZiAoKGdwcyAtSWQgJHlfKS5OYW1lIC1lcSAnc3NoZCcpIHsKcmV0dXJuICR5Xwp9CiR4Xz0keV8KfQp9CmZ1bmN0aW9uIGJfIHsKaWYgKCRsYXVuY2hlZENsaTFQaWQpIHsKaWYgKCEoZ3BzIC1JZCAkel8pKSB7CiJzZXJ2ZXIgZGllZCwgZXhpdCIKZXhpdCAwCn0KfSBlbHNlIHsKaWYgKCEoZ3BzIC1JZCAkc3NoZFBJRCkpIHsKInNzaGQgcGFyZW50IGRpZWQsIGV4aXQiCmV4aXQgMAp9Cn0KfQpmdW5jdGlvbiBHZXRBcnRpZmFjdE5hbWUgewoiY2xpLXdpbjMyLSRhcmNoIgp9CmZ1bmN0aW9uIGdfIHsKJHM9bV8KIkRvd25sb2FkaW5nIGNsaSAkYXJjaCIKIiR7dXVpZH0lJTElJSIKJGFuPUdldEFydGlmYWN0TmFtZQokc3BsYXQ9QHsKVXJpPSJodHRwczovL3VwZGF0ZS5jb2RlLnZpc3VhbHN0dWRpby5jb20vY29tbWl0OiRyXy8kYW4vJHRfIgpUaW1lb3V0U2VjPTIwCk91dEZpbGU9InZzY29kZS1jbGktJHJfLnppcCIKVXNlQmFzaWNQYXJzaW5nPSRUcnVlCn0KW05ldC5TZXJ2aWNlUG9pbnRNYW5hZ2VyXTo6U2VjdXJpdHlQcm90b2NvbCA9ICdUbHMxMicKaXJtIEBzcGxhdAokcy5TdG9wKCkKJGdsb2JhbDpuXyA9ICRzLkVsYXBzZWRNaWxsaXNlY29uZHMKfQpmdW5jdGlvbiBoXyB7CiRnbG9iYWw6d189J3N1Y2Nlc3MnCiRzPW1fCnRyeSB7CiRhY189W1N5c3RlbS5JTy5QYXRoXTo6R2V0UmFuZG9tRmlsZU5hbWUoKQokYWRfPSIkZW52OlRFTVBcJGFjXyIKIkV4cGFuZGluZyBjbGkgaW50byAkYWRfIgoiJHt1dWlkfSUlMiUlIgpFeH
[12:48:55.406] > BhbmQtQXJjaGl2ZSAidnNjb2RlLWNsaS0kcl8uemlwIiAtRGVzdGluYXRpb25QYXRoICIkYWRfIgpjcCAiJGFkX1wkZF8iIC1EZXN0aW5hdGlvbiAkZl8KZGVsIC1SZWN1cnNlICRhZF8KZGVsICJ2c2NvZGUtY2xpLSRyXy56aXAiCiRzLlN0b3AoKQokZ2xvYmFsOm9fID0gJHMuRWxhcHNlZE1pbGxpc2Vjb25kcwp9IGNhdGNoIHsKJGdsb2JhbDp3Xz0nZXJyb3InCiJGYWlsZWQgdG8gdW56aXAgY2xpLiAtICQoJF8uVG9TdHJpbmcoKSkiCmpfIDIwNQpoXwp9CmlmKCEoVGVzdC1QYXRoICIkZl8iKSkgewokZ2xvYmFsOndfPSdtaXNzaW5nRmlsZXMnCiJEb3dubG9hZGVkIHNlcnZlciBpcyBpbmNvbXBsZXRlLiIKal8gMjA1CmhfCn0KfQpmdW5jdGlvbiBhal8gewokcz1tXwppZihUZXN0LVBhdGggJGxvZykgewpkZWwgJGxvZwp9CiRlc2NhcGVkQ2xpRmlsZT0kZl8gLXJlcGxhY2UgJyAnLCAnYCAnCiRhcmdzPSJjb21tYW5kLXNoZWxsIC0tY2xpLWRhdGEtZGlyICckY2xpRGF0YURpcicgLS1wYXJlbnQtcHJvY2Vzcy1pZCAkc3NoZFBJRCAtLW9uLWhvc3QgMTI3LjAuMC4xIC0tb24tcG9ydCAtLXJlcXVpcmUtdG9rZW4gMDYyZmQ4MjUtYzQzZC00ZDQ1LTg4ZGEtYzVlY2YyNjI5NzJjICo+ICckbG9nJyIKJHNwbGF0PUB7CkZpbGVQYXRoID0gInBvd2Vyc2hlbGwuZXhlIgpXaW5kb3dTdHlsZSA9ICJoaWRkZW4iCkFyZ3VtZW50TGlzdCA9IEAoCiItRXhlY3V0aW9uUG9saWN5IiwgIlVucmVzdHJpY3RlZCIsICItTm9Mb2dvIiwgIi1Ob1Byb2ZpbGUiLCAiLU5vbkludGVyYWN0aXZlIiwgIi1jIiwgIiRlc2NhcGVkQ2xpRmlsZSAkYXJncyIKKQpQYXNzVGhydSA9ICRUcnVlCn0KIlN0YXJ0aW5nIGNsaTogJiAnJGZfJyAkYXJncyIKJGdsb2JhbDp6XyA9IChzdGFydCBAc3BsYXQpLklECiRzLlN0b3AoKQokZ2xvYmFsOnFfID0gJHMuRWxhcHNlZE1pbGxpc2Vjb25kcwp9CmZ1bmN0aW9uIGlfIHsKJGdsb2JhbDp2Xz0kVHJ1Z
[12:48:55.406] > QoiVHJpZ2dlciBsb2NhbCBzZXJ2ZXIgZG93bmxvYWQiCiRhbj1HZXRBcnRpZmFjdE5hbWUKIiR7dXVpZH06dHJpZ2dlcl9zZXJ2ZXJfZG93bmxvYWQiCiJhcnRpZmFjdD09JGFuPT0iCiJkZXN0Rm9sZGVyPT0kc189PSIKImRlc3RGb2xkZXIyPT0vdnNjb2RlLWNsaS0kcl8uemlwPT0iCiIke3V1aWR9OnRyaWdnZ
[12:48:55.408] > XJfc2VydmVyX2Rvd25sb2FkX2VuZCIKIldhaXRpbmcgZm9yIGNsaWVudCB0byB0cmFuc2ZlciBzZXJ2ZXIgYXJjaGl2ZS4uLiIKIldhaXRpbmcgZm9yICRzX1x2c2NvZGUtY2xpLSRyXy56aXAuZG9uZSBhbmQgdnNjb2
[12:48:55.412] > RlLWNsaS0kcl8uemlwIHRvIGV4aXN0Igp3aGlsZSgkVHJ1ZSkgewppZihUZXN0LVBhdGggIiRzX1x2c2NvZGUtY2xpLSRyX
[12:48:55.414] > y56aXAuZG9uZSIpIHsKaWYoIShUZXN0LVBhdGggIiRzX1x2c2NvZGUtY2xpLSRyXy56aXAiKSkgewoiVHJhbnNmZXIgZmFpbGVkIgpxIDE5OQp9CiJUcmFuc2ZlciBjb21wbGV0ZSIKZGVsICRzX1x2c2NvZGUtY2xpLSRyXy56aXAuZG9uZQpicmVhawp9IGVsc2UgewpTdGFydC1TbGVlcCAtU2Vjb25kcyAzCmJfCn0KfQp9CmZ1bmN0aW9uIGpfKCRjb2RlKSB7CmlmICgkdl8pIHsKIkFscmVhZHkgYXR0ZW1wdGVkIGxvY2FsIGRvd
[12:48:55.419] > 25sb2FkLCBmYWlsaW5nIgpxICRjb2RlCn0gZWxzZWlmKCRrXykgewppXwp9IGVsc2UgewpxICRjb2RlCn0KfQpmdW5jdGlvbiBwcmludFJlc3VsdCgpIHsKIiR7dXVpZH06IHN0YXJ0IgoiU1NIX0FVVEhfU09DSz09JGVudjpTU0hfQVVUSF9TT0NLPT0iCmFrXwoiJHt1dWlkfTogZW5kIgp9CmZ1bmN0aW9uIG1haW4oKSB7CiRnbG9iYWw6c3NoZFBJRCA9IGFfCmlmKCEoVGVzdC1QYXRoICRzXykpIHsKJG09IkNvdWxkIG5vdCBjcmVhdGUgQ0xJIGRpcmVjdG9yeSIKdHJ5IHsKJG51bGw9bmkgLWl0IGQgJHNfIC1mIC1lYSBzaQp9IGNhdGNoIHsKIiRtLiAtICQoJF8uVG9TdHJpbmcoKSkiCnJldHVybgp9CmlmKCEoVGVzdC1QYXRoICRzXykpIHsKIiRtIgpyZXR1cm4KfQp9CmNkICRzXwp0cnkgewoiTG9va2luZyBmb3IgZXhpc3RpbmcgQ0xJIGluICRzXyIKaWYoVGVzdC1QYXRoICIkZl8iKSB7CiJGb3VuZCBpbnN0YWxsZWQgQ0xJIgp9IGVsc2UgewppZiAoJGxfKSB7CmlfCn0gZWxzZSB7CnRyeSB7IGdfIH0gY2F0Y2ggewoiRG93bmxvYWQgZmFpbGVkLiAtICQoJF8uVG9TdHJpbmcoKSkiCmpfIDE5Mwp9Cn0KaF8KfQphal8KJGFnXz1AewpQYXRoID0gJGxvZwpQYXR0ZXJuID0gIkxpc3RlbmluZyBvbiAuKj86KFswLTldKykkIgp9CiRhZl89KEdldC1EYXRlKS5BZGRTZWNvbmRzKDQpCiRhbF89IlNlcnZlciBkaWQgbm90IHN0YXJ0IHN1Y2Nlc3NmdWxseS4gRnVsbCBzZXJ2ZXIgbG9nIGF0ICRsb2cgPj4+Igp3aGlsZSAoKEdldC1EYXRlKSAtbHQgJGFmXykgewppZihUZXN0LVBhdGggJGxvZykgewokYWhfPShzbHMgQGFnXykuTWF0Y2hlcy5Hcm91cHMKaWYoJGFoXykgewokZ2xvYmFsOnBvcnQgPSAkYWhfWzFdLlZhbHVlCmJyZWFrCn0KfQpzbGVlcCAtTWlsbGlzZWNvbmRzIDMwCn0KaWYgKCEkcG9ydCkgewokYWxfCmNhdCAkbG9nCiI8PDwgRW5kIG9mIHNlcnZlciBsb2ciCnEgMjAwCn0KfSBjYXRjaCB7CiJTZXJ2ZXIgZmFpbGVkIHRvIHN0YXJ0LiAtICQoJF8uVG9TdHJpbmcoKSkiCiIkKCRfLlNjcmlwdFN0YWNrVHJhY2UpIgp9CnRyeSB7CiRnbG9iYWw6YWlfID0gKGdjaW0gV2luMzJfT3BlcmF0aW5nU3lzdGVtKS5WZXJzaW9uCn0gY2F0Y2ggewoiRmFpbGVkIHRvIGZpbmQgV2luZG93cyB2ZXJzaW9uIC0gJCgkXy5Ub1N0cmluZygpKSIKJGdsb2JhbDphaV8gPSAidW5rbm93biIKfQpwcmludFJlc3VsdAoiJHBpZCwgd2F0Y2hpbmcgJHNzaGRQSUQiCndoaWxlICgkVHJ1ZSkgewpiXwpzbGVlcCAzMAp9Cn0KIjk4YTVlYTIzNDYyMTogcmVzdW1lTG9nIgptYWluCg==')))); powershell -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive -EncodedCommand `$remoteSS
[12:48:55.420] > HConfigurationScript"
[12:48:57.060] > 98a5ea234621: running
> 98a5ea234621: pauseLog
[12:48:59.222] > 98a5ea234621: resumeLog
[12:49:00.913] > Looking for existing CLI in C:\Users\Quickemu\.vscode-server
> Found installed CLI
[12:49:00.943] > Starting cli: & 'C:\Users\Quickemu\.vscode-server\code-994fd12f8d3a5aa16f17d42c041e5809167e845a.exe' command-shell --cli-data-dir 'C:\Users\Quickemu\.vscode-server\cli' --parent-process-id 9340 --on-host 127.0.0.1 --on-port --require-token 062fd825-c43d-4d45-88da-c5ecf262972c *> 'C:\Users\Quickemu\AppData\Local\Temp\tmpDD7E.tmp'
[12:49:02.881] > 98a5ea234621: start
[12:49:02.889] > SSH_AUTH_SOCK====
> listeningOn==52251==
> osReleaseId==windows==
[12:49:02.896] >
> osVersion==10.0.26200==
> arch==x64==
> platform==windows==
> unpackResult====
> didLocalDownload==False==
> downloadTime====
> installTime====
> extInstallTime====
> serverStartTime==277==
> execServerToken==111aa111-a11a-1a11-11aa-a1aaa111111a==
[12:49:02.897] > 98a5ea234621: end
> 3544, watching 9340
[12:49:02.897] Received install output: SSH_AUTH_SOCK====
listeningOn==52251==
osReleaseId==windows==
osVersion==10.0.26200==
arch==x64==
platform==windows==
unpackResult====
didLocalDownload==False==
downloadTime====
installTime====
extInstallTime====
serverStartTime==277==
execServerToken==111aa111-a11a-1a11-11aa-a1aaa111111a==
[12:49:02.898] Remote server is listening on port 52251
[12:49:02.898] Parsed server configuration: {"serverConfiguration":{"remoteListeningOn":{"port":52251},"osReleaseId":"windows","arch":"x64","sshAuthSock":"","platform":"windows","execServerToken":"111aa111-a11a-1a11-11aa-a1aaa111111a"},"serverStartTime":277,"installUnpackCode":""}
[12:49:02.899] Persisting server connection details to /Users/tekumara/Library/Application Support/Code/User/globalStorage/ms-vscode-remote.remote-ssh/vscode-ssh-host-d59726ea-994fd12f8d3a5aa16f17d42c041e5809167e845a-0.122.0-es/data.json
[12:49:02.901] Starting forwarding server. local port 50171 -> socksPort 50127 -> remotePort 52251
[12:49:02.902] Forwarding server listening on port 50171
[12:49:02.902] Waiting for ssh tunnel to be ready
[12:49:02.903] [Forwarding server port 50171] Got connection 0
[12:49:02.903] Tunneled port 52251 to local port 50171
[12:49:02.903] Resolved "ssh-remote+windows" to "port 50171"
[12:49:02.904] Initizing new exec server for ssh-remote+windows
[12:49:02.904] Resolving exec server at port 50171
[12:49:02.904] [Forwarding server port 50171] Got connection 1
[12:49:02.945] Exec server for ssh-remote+windows created and cached
[12:49:02.945] Extensions to install: ms-python.python, ms-python.vscode-pylance
[12:49:02.947] ------
[12:49:02.947] No hints found in the recent session.
[12:49:02.963] [server] Checking C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\log.txt and C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\pid.txt for a running server...
[12:49:02.964] [server] Found running server (pid=4512)
[12:49:02.964] [server] Installing extensions...
[12:49:03.111] [server] Checking C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\log.txt and C:\Users\Quickemu\.vscode-server\cli\servers\Stable-994fd12f8d3a5aa16f17d42c041e5809167e845a\pid.txt for a running server...
[12:49:03.111] [server] Found running server (pid=4512)
[12:49:03.112] [server] Installing extensions...
[12:49:03.231] ------
... tries again up 5 attempts ...
Expected Behavior
Can re-connect to running vs code server on windows host
Actual Behavior
Fails to connect second time with:
Failed to connect to the remote extension host server (Error: ExtensionInstallFailed(ExtensionInstallFailed("bash: line 1: C:UsersQuickemu.vscode-servercliserversStable-994fd12f8d3a5aa16f17d42c041e5809167e845aserverbincode-server.cmd: command not found\n")))
Steps To Reproduce
- On the local client, set the remote platform as windows:
"remote.SSH.remotePlatform": { "windows-remote-host-name": "windows" }
- Connect to the Windows remote host - the first time it works
- Reload Window or open a new window and connect - it doesn't work
Anything else?
No response
Metadata
Metadata
Assignees
Labels
sshIssue in vscode-remote SSHIssue in vscode-remote SSH
Activity
[-]Cannot connect to windows host with Windows powershell as default shell[/-][+]Cannot connect to windows host[/+][-]Cannot connect to windows host[/-][+]Cannot re-connect to windows host[/+][-]Cannot re-connect to windows host[/-][+]Cannot connect to windows host[/+][-]Cannot connect to windows host[/-][+]Cannot re-connect to windows host[/+]tekumara commentedon Jan 3, 2026
The logs above show its trying to connect to the running server:
If I kill the running server first, I can connect:
GoshawkGGGG commentedon Mar 23, 2026
I also encountered the same issue where it was impossible to reconnect to the Windows server. In my case, an error occurred stating that the remote environment could not be accessed. Additionally, the plugin attempted to execute bash commands on the Windows server by default, which resulted in another error indicating that the bash program was not found. The connection could only be established after the first SSH attempt timed out and was interrupted. It seems that the problem is related to the configuration files, which become inaccessible after the initial connection is established and the connection is maintained.
GoshawkGGGG commentedon Mar 23, 2026
New discovery: To fix this issue, I just need to disable “Remote.SSH: Use Exec Server”.
arloor commentedon Aug 3, 2026
I believe the root cause is in the VS Code CLI implementation rather than in Remote-SSH's SSH transport.
When reconnecting,
ServerBuilder::get_running()detects the existing server and unconditionally callsdo_extension_install_on_running_server()ifinstall_extensionsis non-empty:https://github.com/microsoft/vscode/blob/d5dd3ab69669226d4a7d4819cad108ebdd6d7708/cli/src/tunnels/code_server.rs#L393-L417
The suspicious part is inside
do_extension_install_on_running_server():https://github.com/microsoft/vscode/blob/d5dd3ab69669226d4a7d4819cad108ebdd6d7708/cli/src/tunnels/code_server.rs#L314-L343
This code always invokes
bash, including when the CLI is running on Windows.On a Windows remote,
start_script_pathis a path similar to:Therefore, during reconnection the implementation effectively tries to execute a Windows
.cmdfile through:This explains both observed errors:
C:Users...code-server.cmd: command not founderror reported in this issue.bashresolves to an inaccessible Windows app execution alias, spawning it fails withCodeError(CommandFailed { command: "bash", code: -1, output: "The file cannot be accessed by the system. (os error 1920)" }).It also explains why:
Found running server/Installing extensions...;remote.SSH.defaultExtensionsavoids the problem;remote.SSH.useExecServeravoids this code path.The same codebase already provides a platform-aware
new_script_command()helper, which usescmd /Q /Con Windows:https://github.com/microsoft/vscode/blob/d5dd3ab69669226d4a7d4819cad108ebdd6d7708/cli/src/util/command.rs#L87-L103
Would it make sense for
do_extension_install_on_running_server()to usenew_script_command(start_script_path)and pass the extension flags as individual arguments, instead of constructing a shell command string and invokingbash -cunconditionally?For example, conceptually:
This would also avoid shell escaping issues for server paths containing spaces or other special characters.
arloor commentedon Aug 3, 2026
While waiting for microsoft/vscode#328660 to reach a Stable release, I tested a temporary workaround that keeps the official VS Code CLI unchanged: place a small, restricted
bash.exeshim next to the remote CLI.Why this works
The official remote CLI is located at:
When that CLI executes
Command::new("bash"), Windows searches the calling application's directory before the PATH locations, so it finds:before the inaccessible WindowsApps alias. See the CreateProcess executable search order.
Restricted shim design
This is not a general Bash implementation or a general Bash-to-CMD translator. The shim accepts only the invocation currently made by the reconnect path:
It validates that:
-c <command>;%USERPROFILE%\.vscode-server\cli\servers\<one-directory>\server\bin\code-server.cmd;--install-extension=<id>flag.It then delegates to the Windows-native runner:
The check intentionally does not pin a VS Code commit, so it can continue to work for later versions while they still contain the unconditional
bash -ccall. Unexpected scripts or arguments are rejected instead of being passed tocmd.exe.I compiled the shim as a statically linked Windows executable and installed it as:
Test result
Tested with VS Code 1.131.0, Remote-SSH 0.124.0, and a Windows 11 x64 remote:
Found running serverfollowed byInstalling extensions...;CommandFailed,basherror, oros error 1920.This is only a local workaround. Once microsoft/vscode#328660 is included in the installed Stable version, the shim should be disabled or removed.