How to Copy Files with SCP between Linux Servers

1.1 SCP Command Line-An Overview

 

The SCP command line is commonly used to copy files over SSH, and between popular Operating systems like Linux, Mac and Windows in a secure fashion. SCP is used to copy files to/from a remote server. It also allows you to copy files from one remote server to another remote server, without passing traffic through your PC.

 

1.2 Configuring the System of the Virtual Machine

 

At the outset, for sending files to the virtual machines, you would require a specific set of configuration, as explained below:

1. Open VirtualBox

2. Please select the virtual machine where your target system is running.

3. Open Settings > Network

4. Please select the correct Adapter tab (it will be the first one in case you have not made any changes so far)

5. You must select Bridged Adapter from the "Attached to" dropdown menu.

6. Now, you can run your virtual machine.

 

1.3 Initiating File Copy between Linux Servers Using SCP

 

Once begun, you must open a terminal and key in the following:

sudo apt-get install openssh-server
ifconfig

The ifconfig will throw up a few blocks, like the one titled eth0.

 ctest@ctest-System-Product-Name ~ $ ifconfig
eth0		Link encap:Ethernet  HWaddr f4:6d:04:94:8f:17
inet addr:192.168.0.11  Bcast:192.168.0.255  Mask:255.255.255.0
          inet6 addr: fe80::f66d:4ff:fe94:8f17/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:234392 errors:0 dropped:0 overruns:0 frame:0
          TX packets:128835 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:332109021 (332.1 MB)  TX bytes:11758082 (11.7 MB)
          Interrupt:43 Base address:0x6000

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:39 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:2424 (2.4 KB)  TX bytes:2424 (2.4 KB)

ctest@ctest-System-Product-Name ~ $

The IP address exhibited on inet address: is the one your machine would have in your internal network, and it will be the one you are going to access the machine under. Here, you must revisit the sender system now that you are aware of the IP of the receiver. If you possess the files to be sent, in addition to the directory for storing these on your virtual machine ready, you may simply go ahead and send the file by using the following command:

scp [path of file to send] root@[receiver's IP]:[target directory]

In the above command, you must replace the items in brackets [] with actual values.

For instance, if you wish to send a file titled MyVideo.mp4 housed in the /home/ctest/Videosdirectory to the /home/cooldude/Videos directory of the system that has an internal IP of 191.167.1.61, you must use the following command line:

scp /home/ctest/Videos/MyVideo.mp4 root@191.167.1.61:/home/cooldude/Videos

 

1.4 Fixing Errors

 

Post entering the basic SCP command, you may encounter the following message:

 

ctest@ctest-System-Product-Name ~ $ scp /home/ctest/Videos/MyVideo.mp4 root@191.167.1.61:/home/cooldude/Videos
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@  WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the ECDSA key sent by the remote host is
4e:c0:50:9a:cf:b6:bc:45:ed:9b:54:97:d8:11:21:a8.
Please contact your system administrator.
Add correct host key in /home/ctest/.ssh/known_hosts to get rid of this message.
Offending ECDSA key in /home/ctest/.ssh/known_hosts:4
  remove with: ssh-keygen -f "/home/ctest/.ssh/known_hosts" -R 191.167.1.61
ECDSA host key for 191.167.1.61has changed and you have requested strict checking.
Host key verification failed.
lost connection
ctest@ctest-System-Product-Name ~ $

More often than not, this is caused when the system with the given IP is no longer the same as it was when you last connected to the same IP. For instance, if you happened to host a new virtual machine that subsequently took the same IP as the old one.
To fix this one, you must follow the commands given in the message to remove the offending key (as shown below):

ssh-keygen -f "/home/ctest/.ssh/known_hosts" -R 191.167.1.61

You must ensure that you replace the path and the IP with the ones matching your specific inputs. You may also remove the key manually by opening the known_host file with the help of a text editor, and removing the key (obviously as root).

 

1.5 Completing the Process

 

If, however, you do not come across any such issue, or you have managed to tackle the same, you would be asked if you really wish to proceed. You must key in yes and hit Enter to confirm the same.

Next, you’ll be asked for the root password of the receiver, which you must key in and before hitting Enter once again.

Now, the copied file must be accessible on the intended directory of the receiver, although you must not have any permissions to write/execute the same. If, however, you are seeking full permissions, please use the following command:

sudo chmod 777 /home/cooldude/Videos/MyVideo.mp4

Here, you must remember to change the path value to the one corresponding to your file, and you are good to go!