The WebSSH2 server provides a WebSocket interface for establishing SSH connections. This API documentation outlines the events and data structures used for communication between the client and the server.
Currently this implementation requires Socket.IO v2.2.0 due to this instance targeting node 6.9.1 for a legacy project. Future releases will not have this limitation.
The server uses Socket.IO for real-time communication. Connect to the WebSocket server at the same host and port as the HTTP server, with the path /ssh/socket.io.
-
authentication- Emitted to request authentication or provide authentication results.
- Payload:
{ action: string, // "request_auth" or "auth_result" success?: boolean, // Only present for "auth_result" message?: string // Error message if authentication fails }
-
permissions- Emitted after successful authentication to provide allowed actions.
- Payload:
{ autoLog: boolean, allowReplay: boolean, allowReconnect: boolean, allowReauth: boolean }
-
getTerminal- Emitted to request terminal specifications from the client.
- Payload:
true
-
data- Emitted when there's output from the SSH session.
- Payload:
string(UTF-8 encoded terminal output)
-
ssherror- Emitted when an SSH-related error occurs.
- Payload:
string(Error message)
-
updateUI- Emitted to update specific UI elements.
- Payload:
{ element: string, // UI element identifier value: any // New value for the element }
-
authenticate- Emit this event to provide authentication credentials.
- Payload:
{ username: string, password: string, host: string, port: number, term?: string // Optional terminal type }
-
terminal- Emit this event to provide terminal specifications.
- Payload:
{ term: string, // e.g., "xterm-256color" cols: number, rows: number }
-
data- Emit this event to send user input to the SSH session.
- Payload:
string(UTF-8 encoded user input)
-
resize- Emit this event when the terminal size changes.
- Payload:
{ cols: number, rows: number }
-
control- Emit this event for special control commands.
- Payload:
string("replayCredentials" or "reauth")
-
disconnect- Emit this event to close the connection.
- No payload required
- The server emits
authenticationwithaction: "request_auth". - The client emits
authenticatewith credentials. - The server may emit
authenticationwithaction: "keyboard-interactive"for additional authentication steps. - The server emits
authenticationwithaction: "auth_result"andsuccess: true/false.
- After successful authentication, the server emits
getTerminal. - The client emits
terminalwith terminal specifications. - The server establishes the SSH connection and starts emitting
dataevents with terminal output. - The client can now send
dataevents with user input.
- The client should listen for
ssherrorevents and handle them appropriately (e.g., displaying error messages to the user).
- The client should listen for
updateUIevents and update the corresponding UI elements.
- Handle connection errors and implement reconnection logic.
- Implement proper error handling and user feedback.
- Securely manage authentication credentials.
- Handle terminal resizing appropriately.
- Implement support for special control commands (replay credentials, reauthentication).