How to use SSH and SCP on Windows 10 to upload or download files
Posted on Oct 02, 2020 ‐ 4 min read
So, there are numerous tool that can help you login to your server. My personal preference over the past few years have been Bitvise SSH client and WinSCP. I still use them because they are very straight forward and highly configurable. But there are times where you just want to run a command or upload a single file without going through all the trouble of logging in and managing Private Keys.
Follow the below steps to configure SSH and SCP on your system.
Note: Below steps are also applicable with Windows 11.
The first thing you need to do is Enable OpenSSH in Windows optional features. Skip this step if it is already enabled. Search and open 'optional feature' from start menu and then click on 'Add a feature' and search for 'OpenSSH Client' and click on install.
Now that you've enabled OpenSSH run
ssh in windows terminal to verify it has been installed correctly.
Now you can connect to remote server using ssh commands that you are used to in Linux systems.
ssh firstname.lastname@example.org # you can also use private key file to login ssh email@example.com -i "C:\location\of\private\key"
TBH, every time we want to log in, we have to enter the host name or location of private key or password. And now suddenly things don't seem direct and easy.
You can save your profiles inside a config file located in
C:\Users\username\.ssh\config. Edit the code structure given below and save it in config file. Give it a friendly name, I've used 'wt' in the example, you will use this
Host to login later. Update the
Port. You can use as many profiles as you want. Just put another profile in new line and make sure it is properly indented.
Host wt HostName 10.21.43.231 User ubuntu IdentityFile "D:\Users\Profiles\SSH Key\key" IdentitiesOnly yes Port 22 ServerAliveInterval 60
Now just enter
ssh wt to login automatically.
If you are getting "Warning: Unprotected Private Key File!" warning then make sure you have set the right permission for private key file.
Open the advanced file setting in security tab and click on 'Disable inheritance' button. Now click on 'Add' button to add a user for file permission.
Click on 'Select a principal' link and type your username or linked account email.
Save all the settings and try again by running
ssh wt in terminal.
So far everything working great? Well, we are not done yet. Let's take it a step up further.
You can also use SCP commands to upload or download files to and from remote server.
# upload single file to remote server scp filename.txt wt:/home/ubuntu/filename.txt
# download single file from remote server scp wt:/home/ubuntu/filename.txt test.txt
Similarly, you can use
-r flag to recursively download files from the server.
scp -r wt:/remote/folder/path local/folder
And to upload files to server use below command.
scp -r ./local/folder wt:/home/ubuntu/app
Pro-tip: You can add a npm script to package.json file to automatically upload the build folder to remote server. Just run
npm run publishand all the files and folder will be uploaded.
From here the sky is the limit. If you face any difficulties in setting up SSH or SCP then write to me on @vipiny35.