Intercept and mock failed SSH connections to provide log dumps, or even a troubleshooting link
- Dominant language
- TypeScript
- Stars
- 130
- Forks
- 48
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 15
Description
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 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.
Contributor guide
Assessment
This issue has not been assessed yet.