# How to connect to a Windows VPS with Remote Desktop

URL: https://cloudj.net/blog/connect-windows-vps-rdp
Published: 2026-11-11 · Updated: 2026-11-11

> Connect to a Windows VPS with Remote Desktop from Windows, macOS, Linux or a phone, then lock it down with NLA, a strong password and IP-restricted RDP.

To connect to a Windows VPS you need three things: the server's IP address, the login details, and a Remote Desktop (RDP) client. That part takes two minutes. The part that deserves more care comes right after: a Windows server with RDP open to the whole internet soon attracts automated password-guessing attempts, so this guide also covers the few settings that make the connection safe to leave running.

## Before you connect

Windows servers on Cloudj use password login rather than SSH keys. After you deploy, open the server page in the [Cloudj console](https://app.cloudj.net). It shows the public IPv4 address and the generated password. The username on Windows servers is normally `Administrator`; use the one shown with your login details.

Give the server a few minutes after deployment before your first attempt. Windows finishes its first-boot setup in the background, and an early connection can fail even though nothing is wrong.

Remote Desktop listens on TCP port 3389 by default. If you are on a corporate or school network that blocks outbound connections to unusual ports, test from another network first.

## Connect to a Windows VPS from each operating system

### Windows

Windows includes the Remote Desktop Connection client.

1. Press `Win+R`, type `mstsc` and press Enter.
2. Enter the server IP in **Computer** and click **Connect**.
3. When asked for credentials, choose **More choices**, then **Use a different account**, and enter `Administrator` with the password from the server page.
4. Accept the certificate warning the first time. The server uses a self-signed certificate, which is expected.

You can also start it directly from a terminal, adding the port if you change it later:

```powershell
mstsc /v:203.0.113.10
mstsc /v:203.0.113.10:33899
```

Under **Show Options**, the **Local Resources** tab lets you share the clipboard and local drives, which is the easiest way to copy files to the server.

### macOS

Install **Windows App** (formerly Microsoft Remote Desktop) from the Mac App Store. Click the plus button, choose **Add PC**, enter the IP address, and add a user account with `Administrator` and the password. Double-click the PC to connect.

### Linux

Remmina is the most common graphical client and handles RDP out of the box:

```bash
sudo apt install -y remmina
```

Create a new connection, choose the RDP protocol, and enter the IP, username and password. If you prefer the command line, FreeRDP works well. On distributions that ship FreeRDP 3, the X11 client is called `xfreerdp3`:

```bash
sudo apt install -y freerdp3-x11
xfreerdp3 /v:203.0.113.10 /u:Administrator /dynamic-resolution
```

### Android and iPhone

Install **Windows App** from Google Play or the App Store, add a PC with the IP address and credentials, and connect. A phone is fine for restarting a stuck program; for real work, use a computer.

## Change the password first

The generated password is strong, but it has been displayed in a browser. Change it on the first login: press `Ctrl+Alt+End` inside the session and choose **Change a password**, or open an elevated Command Prompt and run:

```powershell
net user Administrator *
```

Store the new password in a password manager. If you prefer to keep the original, at least treat the console account that can view it as sensitive and protect it with a strong password of its own.

## Make sure NLA is on

Network Level Authentication (NLA) makes the client prove the credentials before the server opens a full Windows session. That reduces the load from bots and blocks some older attack paths. Check it in an elevated PowerShell window; `1` means NLA is required:

```powershell
(Get-CimInstance -Namespace root\cimv2\TerminalServices -ClassName Win32_TSGeneralSetting -Filter "TerminalName='RDP-tcp'").UserAuthenticationRequired
```

If it returns `0`, turn it on:

```powershell
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name UserAuthentication -Value 1
```

All the clients above support NLA, so there is no reason to leave it off.

## Limit who can reach RDP

The strongest single step is to accept RDP only from addresses you trust. If you work from a fixed office IP, restrict the built-in firewall rules to it. Keep your current session open while you do this, and test a new connection before you log out:

```powershell
Set-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP,RemoteDesktop-UserMode-In-UDP -RemoteAddress 203.0.113.50
```

If your home IP changes often, two practical alternatives are a VPN server you connect through first (see [setting up WireGuard on a VPS](https://cloudj.net/blog/wireguard-vpn-vps-netherlands)) or a small list of addresses you update when needed.

### Changing the RDP port

Moving RDP off 3389 does not stop a targeted attacker, but it cuts the automated noise in your logs considerably. Add the firewall rule first, then change the port, then restart the service:

```powershell
New-NetFirewallRule -DisplayName 'RDP 33899' -Direction Inbound -Protocol TCP -LocalPort 33899 -Action Allow
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name PortNumber -Value 33899
Restart-Service -Name TermService -Force
```

Your session drops when the service restarts. Reconnect with `203.0.113.10:33899`. Once that works, disable the old rules with `Disable-NetFirewallRule -Name RemoteDesktop-UserMode-In-TCP,RemoteDesktop-UserMode-In-UDP`. If you also restrict by IP, add `-RemoteAddress` to the new rule.

### Watch the failed logins

Failed logons are recorded as event ID 4625. This shows the most recent ones, including the source address:

```powershell
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4625} -MaxEvents 20
```

A steady stream of entries is the sign that RDP is too exposed. The broader [secure new VPS checklist](https://cloudj.net/blog/secure-new-vps-checklist) covers updates and the rest of the basics.

## When the connection fails

| Message or symptom | What it usually means | What to try |
|---|---|---|
| Cannot connect to the remote computer | Port closed, wrong port, or server still booting | `Test-NetConnection 203.0.113.10 -Port 3389` from Windows, `nc -vz 203.0.113.10 3389` from macOS or Linux |
| Credentials did not work | Wrong username format or old password | Use `.\Administrator` and the current password |
| Connects, then drops right away | Firewall or port change half applied | Check that the rule and `PortNumber` match |
| Session is slow or laggy | Distance to the server or heavy visual settings | Lower colour depth and turn off wallpaper in client options |

If sessions feel slow everywhere, the server may simply be far from you. The [VPS locations guide](https://cloudj.net/blog/vps-locations-guide) and the steps in [choosing a VPS location by latency](https://cloudj.net/blog/choose-vps-location-latency) help you pick a closer city. For location-specific advice, see our guides to a [Windows VPS in the UK](https://cloudj.net/blog/windows-vps-rdp-uk) and a [Windows VPS in Singapore](https://cloudj.net/blog/windows-vps-singapore).

## FAQ

### Where do I find the Windows password?

On the server page in the Cloudj console, next to the IP address. If you change it inside Windows, the console has no way to know the new one, so keep it in a password manager.

### Can I use SSH keys with a Windows VPS?

Cloudj Windows servers use password login. You can install the OpenSSH server feature inside Windows later if you want SSH access as well.

### Is there an extra cost for Windows?

Windows servers include a monthly licence fee, and the console shows it before you deploy. Live prices are on the [pricing page](https://cloudj.net/pricing).

### Do I need Windows at all?

Only if your software needs it. Many server workloads run fine on Linux; our comparison of [Linux vs Windows VPS](https://cloudj.net/blog/linux-vs-windows-vps) helps you decide.

## Get connected

Deploy a Windows server in the [Cloudj console](https://app.cloudj.net), check the OS list for your location, and connect with the client for your device. Spend the next five minutes on NLA and IP restrictions, and the server is ready for daily use.
