From cba90cec0ab9b0e2ec8acd064316c596e2f2d5c3 Mon Sep 17 00:00:00 2001 From: Eugene Pankov Date: Sun, 7 Feb 2021 12:49:34 +0100 Subject: [PATCH] better error messages for X11 forwarding issues --- terminus-ssh/src/api.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/terminus-ssh/src/api.ts b/terminus-ssh/src/api.ts index b9d394c3..63b74adb 100644 --- a/terminus-ssh/src/api.ts +++ b/terminus-ssh/src/api.ts @@ -140,6 +140,9 @@ export class SSHSession extends BaseSession { this.shell = await this.openShellChannel({ x11: this.connection.x11 }) } catch (err) { this.emitServiceMessage(colors.bgRed.black(' X ') + ` Remote rejected opening a shell channel: ${err}`) + if (err.toString().includes('Unable to request X11')) { + this.emitServiceMessage(' Make sure `xauth` is installed on the remote side') + } return } @@ -245,7 +248,13 @@ export class SSHSession extends BaseSession { } socket.on('error', e => { // eslint-disable-next-line @typescript-eslint/no-base-to-string - this.emitServiceMessage(colors.bgRed.black(' X ') + ` Could not connect to the X server ${xHost}:${xPort}: ${e}`) + this.emitServiceMessage(colors.bgRed.black(' X ') + ` Could not connect to the X server: ${e}`) + this.emitServiceMessage(` Terminus tried to connect to ${xHost}:${xPort} based on the DISPLAY environment var (${displaySpec})`) + if (process.platform === 'win32') { + this.emitServiceMessage(' To use X forwarding, you need a local X server, e.g.:') + this.emitServiceMessage(' * VcXsrv: https://sourceforge.net/projects/vcxsrv/') + this.emitServiceMessage(' * Xming: https://sourceforge.net/projects/xming/') + } reject() }) socket.on('connect', () => {