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', () => {