Secure file transfer keeps configuration backups, logs, and release artifacts moving without exposing credentials or data in transit. PSCP, included with the PuTTY suite, provides a lightweight way to copy files over SSH from Windows 11. Using encrypted transport avoids the clear-text risk of legacy file transfer protocols.
PSCP is a command-line SCP client that connects to an SSH server and copies files between local and remote paths. The transfer direction is determined by which side uses the remote spec format ([user@]host:/path), while local paths use standard Windows paths. Host key validation uses PuTTY’s host key cache, so the first connection to a new server prompts to trust and store the server fingerprint.
Transfers require an accessible SSH service, valid credentials (password or .ppk key), and sufficient permissions on the target directory. The first-time host key prompt should be verified out-of-band to avoid man-in-the-middle risk, especially when automation uses -batch. Remote paths typically use forward slashes, and paths containing spaces should be quoted.
C:\> pscp "C:\Temp\report.csv" admin@server.example.net:/home/admin/report.csv The server's host key is not cached in the registry. You have no guarantee that the server is the computer you think it is. The server's ssh-ed25519 key fingerprint is: ssh-ed25519 255 SHA256:ZQm0F0KqzYH8ZPq5bY0c4sK3JpC7M0pD0x2r6oKQ3hQ If you trust this host, enter "y" to add the key to PuTTY's cache and carry on connecting. Store key in cache? (y/n) y admin@server.example.net's password: report.csv | 74 kB | 74.0 kB/s | ETA: 00:00:00 | 100%
Storing an incorrect host key can enable interception, so confirm the fingerprint from a trusted channel before entering y.
Add -sftp when the server blocks SCP but allows SFTP.
C:\> pscp admin@server.example.net:/var/log/auth.log "C:\Temp\auth.log" auth.log | 1532 kB | 1532.0 kB/s | ETA: 00:00:00 | 100%
C:\> pscp -r "C:\Temp\reports" admin@server.example.net:/home/admin/reports/ reports\2025-12.csv | 55 kB | 55.0 kB/s | ETA: 00:00:00 | 100% reports\2025-11.csv | 49 kB | 49.0 kB/s | ETA: 00:00:00 | 100% ##### snipped #####
C:\> pscp -r admin@server.example.net:/home/admin/reports "C:\Temp\reports" reports\2025-12.csv | 55 kB | 55.0 kB/s | ETA: 00:00:00 | 100% reports\2025-11.csv | 49 kB | 49.0 kB/s | ETA: 00:00:00 | 100% ##### snipped #####
C:\> pscp -i "C:\Users\Admin\Documents\keys\id_ed25519.ppk" "C:\Temp\report.csv" admin@server.example.net:/home/admin/report.csv Passphrase for key "id_ed25519.ppk": report.csv | 74 kB | 74.0 kB/s | ETA: 00:00:00 | 100%
A key loaded in Pageant can be used without -i when the agent is available.
C:\> pscp -P 2222 "C:\Temp\report.csv" admin@server.example.net:/home/admin/report.csv report.csv | 74 kB | 74.0 kB/s | ETA: 00:00:00 | 100%
-P sets the port, while -p is a different option, so case matters.
C:\> pscp -batch -P 2222 -i "C:\Users\Admin\Documents\keys\id_ed25519.ppk" "C:\Temp\report.csv" admin@server.example.net:/home/admin/report.csv report.csv | 74 kB | 74.0 kB/s | ETA: 00:00:00 | 100%
-batch disables prompts, so an unknown host key or a passphrase prompt causes failure unless the host key is already cached and the key is usable without interaction.
C:\> dir C:\Temp\auth.log
Volume in drive C is Windows
Volume Serial Number is 1234-ABCD
Directory of C:\Temp
12/16/2025 01:42 AM 1,569,024 auth.log
1 File(s) 1,569,024 bytes
0 Dir(s) 148,123,123,712 bytes free