Chapter 4 of 12
RDP — Remote Desktop
MangoSSH's RDP connections run through a built-in, canvas-based RDP client (IronRDP under the hood) inside the MangoSSH window itself — no external mstsc/xfreerdp process, no separate window to manage. Every saved RDP host lives in the same sidebar/Groups system as SSH.
Basic RDP Connection
Purpose
Connect to a Windows machine's desktop, saved for reuse.
How to do it
- Click RDP in the toolbar, then + Add RDP Host .
- Fill in Hostname/IP , Port (3389 default), a Display name , Username (plain, DOMAIN\user , or user@domain.com ), and optionally Domain (for NLA).
- Enter the Password or leave it blank to be prompted at connect time; check Save password to store it in the OS keychain.
- Pick a Resolution : Auto-fit window (matches the MangoSSH window size, crispest), a fixed preset (1280×800 up to 2560×1440), or Fullscreen.
- Optionally assign a Group for organization and credential inheritance (same Groups system as SSH, scoped independently per protocol).
- Click Add & Connect — unlike SSH's "Add host" button, this one both saves the host AND opens the session immediately in the same click; there's no separate save-only step.
How to verify
- Click Add & Connect and expect the remote desktop to start rendering inside the MangoSSH window within a few seconds, with no extra click needed to "connect" afterward.
- Move the mouse and type over the session; expect the remote cursor to track your mouse and keystrokes to appear in whatever remote window has focus.
- With Auto-fit resolution selected, resize the MangoSSH window (drag an edge/corner).
- Expect the remote desktop's rendered size to resize along with it, with no black bars or scrollbars appearing.
- Disconnect, then reopen the same host from the sidebar — this second connect should also be a single click on the sidebar entry, same as SSH from this point on.
Troubleshooting
- Black screen after connecting — often an NLA (Network Level Authentication) mismatch; confirm the Domain field matches what the server expects, or try leaving it blank for a local/Microsoft account.
- "Unknown server certificate" prompt on first connect — shows the exact fingerprint and two buttons, "No, cancel" and "Yes, trust & connect"; expected the first time, but treat it exactly like SSH's host-key trust prompt (see the SSH chapter) — verify out of band if this appears on a host you've connected to before without a prompt.
- Connects but keyboard input is wrong (wrong layout/symbols) — a keyboard-layout mismatch between your machine and the remote session; check the remote Windows machine's own configured input language.
RD Gateway (Remote Desktop Gateway)
Purpose
- Reach an RDP host that isn't directly exposed on the network at all — only reachable through an organization's RD Gateway server over HTTPS/WebSocket (MS-TSGU), the standard pattern for publishing internal desktops without opening RDP's raw port to the internet.
- MS-TSGU RDP You embedded RDP canvas RD Gateway HTTPS / WebSocket Windows host no direct exposure The gateway and the SSH-tunnel option (below) are independent — you can use either, both, or neither, depending on how the target network is set up.
How to do it
- On the host's Add/Edit form, fill in RD Gateway : the gateway address (e.g. gateway.example.com:443 ), and a separate gateway username/password (HTTP Basic auth) — stored separately in the OS keystore from the host's own RDP password.
- Leave it blank for a direct connection with no gateway.
How to verify
- Fill in the gateway address and gateway username/password, leave the main Username/Password fields set to the target machine's own login, and click Add & Connect.
- Expect the session to establish successfully even from a network position that CANNOT reach the target host directly (e.g. outside the corporate VPN) — that's the real proof the gateway hop is doing the work, not a direct connection that happened to succeed on its own.
- As a negative control: temporarily clear the gateway password (leave the gateway host set) and reconnect.
- Expect a gateway-specific authentication failure, distinct from a normal "wrong Windows password" error — confirming the two credentials are genuinely separate.
Troubleshooting
- Gateway authentication fails — this is a separate credential from the RDP host password; double check the gateway username/password specifically, not the target machine's login.
- Works without the gateway configured but you need it for off-network access — confirm you actually need it: if the target is reachable directly (e.g. on VPN), the gateway fields can stay blank.
SSH-Tunneled RDP
Purpose
Reach an RDP host that's only reachable from inside a network you can SSH into — route the RDP session through an existing saved SSH connection as a bastion, without needing a dedicated RD Gateway server.
How to do it
- On the host's Add/Edit form, set Tunnel via SSH host to any already-saved SSH host that can reach this RDP target's network.
- MangoSSH opens that SSH session, forwards a local port through it to the RDP host's port on the far side, then points the embedded RDP client at that local forwarded port — all automatically.
How to verify
- Set "Tunnel via SSH host" to a saved SSH bastion, connect, and expect the RDP session to open normally with no extra prompts.
- While the RDP session is open, check the SSH sidebar and confirm the referenced bastion host's status dot is ALSO green — this is what proves the tunnel is really riding on a live SSH connection, not a coincidental direct path.
- Disconnect the SSH bastion host specifically (not the RDP session).
- Expect the RDP session to drop shortly after — this is expected and confirms the dependency; it's not a bug in the RDP session itself.
Troubleshooting
- RDP session drops when you close the SSH session — expected; the SSH connection is the tunnel's transport.
- Reconnect the SSH host first, or rely on its own auto-reconnect setting if configured.
- "Connection refused" through the tunnel — the RDP port isn't actually reachable from the SSH bastion's own network position; confirm the bastion itself can reach the target's port 3389 (or whatever port you set).
Smartcard & Printer Redirection
Purpose
Use a physical smartcard reader for in-session authentication (e.g. a CAC-gated internal app), or print from the remote session to a local PDF, both without any extra software inside the remote machine.
How to do it
- Check Smartcard redirection to make a locally-attached smartcard reader available inside the session — useful for a remote app that itself requires a smartcard login or signing step.
- Check Printer redirection to make a virtual printer available inside the session — anything printed there saves as a PDF on your local machine, no physical printer or driver installation needed.
How to verify
- Smartcard : insert your card into the local reader BEFORE connecting, check Smartcard redirection, connect, then open a smartcard-aware app inside the session (e.g. Windows' own "certutil -scinfo" from a command prompt, or a PIV-gated internal tool).
- Expect the card to be listed there exactly as it would be if you were sitting at that machine physically.
- Printer : check Printer redirection, connect, open any document (e.g. Notepad) inside the session, and print it.
- Expect no physical printer dialog — instead, a PDF should appear in your LOCAL machine's default downloads/save location within a few seconds of printing.
Troubleshooting
- Smartcard not visible inside the session — confirm the reader is recognized locally first (check your own OS's smartcard/PIV status) before assuming the redirection itself is broken.
- Printed PDF never appears — check your OS's default "Save" download location; the PDF is written there, not to a specific folder inside MangoSSH.
Multi-Monitor (Experimental)
Purpose
- Span a remote session across every physical monitor detected on your local machine, for a true multi-monitor remote desktop experience.
- Marked experimental in the UI deliberately — multi-monitor RDP depends on both an initial display-topology negotiation and a live display-control channel, which is newer, less-traveled territory than the rest of the RDP feature set.
How to do it
Check Multi-monitor on the host's Add/Edit form before connecting.
How to verify
- On a machine with 2 or more physical monitors, check Multi-monitor before connecting.
- Connect and expect the session to span across your monitors matching your desktop's actual arrangement (left monitor content on the left, etc.) — not just mirrored on one screen or confined to whichever monitor MangoSSH's own window happened to be on.
- Move the mouse across the boundary between two monitors during the session and confirm the cursor moves continuously, the way it would moving between two monitors locally.
Troubleshooting
- Session only shows on one monitor — given the experimental status, fall back to single-monitor (uncheck the option) if it doesn't behave correctly on your setup, and treat any inconsistency as expected for now rather than a configuration mistake on your part.
Clipboard Sharing
Purpose
Copy text between your local machine and the remote Windows session in either direction, the way you'd expect any remote-desktop tool to behave.
How to do it
- Nothing to configure — clipboard redirection is always active for embedded RDP sessions.
- Copy text locally, switch focus to the RDP session window, and paste — or copy inside the remote session and paste locally.
How to verify
- On your local machine, select and copy (Ctrl+C) a distinctive piece of text (e.g. "clipboard-test-123").
- Click into the RDP session window, open Notepad remotely, and paste (Ctrl+V).
- Expect "clipboard-test-123" to appear exactly.
- Reverse it: type a different distinctive string inside the remote Notepad, select and copy it there, click back onto your local desktop, and paste into a local text editor.
- Expect the same round-trip to work in this direction too.
Troubleshooting
- Paste doesn't pick up what you just copied remotely — clipboard sync is triggered by focus changes; click once inside the MangoSSH window (giving it focus) before pasting locally.