Today, Coder already "mocks" real SSH by running ProxyCommand. This is awesome, because Coder sysadmins do not need to open port 22 on devices, but makes it difficult for ssh, VS Code, or other commands to get the full story of why a connection has failed. Some logs are available with coder ssh -v, but in cases like VS Code Remote SSH, paths to get this info are unclear to the user as they just see a "Cannot reconnect. Please reload the window." button
We are working on coder/coder#12160, which will allow admins (or pipelines with admin access) to collect diagnostic information on behalf of a workspace. However, users will not be able to request it, and in the case of #119878 there is an issue external to Coder (e.g. VPN troubleshooting) that is causing the issue.
Proposal
If a connection to a workspace fails, we still "mock" the SSH request so that ssh or IDE plugins (VS Code and JetBrains) think it succeeds and then a message/hook can provide additional logging, or even link to an external wiki/service that gives the user more details on how to resolve/diagnose this issue.
By mocking an SSH connection, it allows us to inform extensions and provide a better UX than VS Code's "disconnected." It could be a useful utility for troubleshooting user connections by supplying more data or custom errors.
This is just an idea and was inspired by a customer-reported issue: https://github.com/coder/coder/issues/11978
Background
Today, Coder already "mocks" real SSH by running
ProxyCommand
. This is awesome, because Coder sysadmins do not need to open port22
on devices, but makes it difficult forssh
, VS Code, or other commands to get the full story of why a connection has failed. Some logs are available withcoder ssh -v
, but in cases like VS Code Remote SSH, paths to get this info are unclear to the user as they just see a "Cannot reconnect. Please reload the window." buttonWe are working on coder/coder#12160, which will allow admins (or pipelines with admin access) to collect diagnostic information on behalf of a workspace. However, users will not be able to request it, and in the case of #119878 there is an issue external to Coder (e.g. VPN troubleshooting) that is causing the issue.
Proposal
If a connection to a workspace fails, we still "mock" the SSH request so that
ssh
or IDE plugins (VS Code and JetBrains) think it succeeds and then a message/hook can provide additional logging, or even link to an external wiki/service that gives the user more details on how to resolve/diagnose this issue.By mocking an SSH connection, it allows us to inform extensions and provide a better UX than VS Code's "disconnected." It could be a useful utility for troubleshooting user connections by supplying more data or custom errors.