在带有SCP的Linux系统之间移动文件

在Linux系统之间移动文件与SCP

版本1.0
作者:Christian Schmalfeld <c [dot] schmalfeld [at] projektfarm [dot] de>

本文介绍如何使用scp (secure copy)命令在服务器之间移动文件。 为了显示它的工作原理,我将把文件从我的硬盘移动到VirtualBox上运行的虚拟机。 两个驱动器上都安装了Linux Mint 11。

本教程没有任何形式的保证。 我不保证这将适用于您。

1初步说明

使用scp,您不仅可以将文件移动到虚拟机之间,也可以在虚拟机之间进行移动,也可以将其移动到世界上任何服务器。 您只需要知道服务器的IP地址和访问它所需的密码。

2配置虚拟机的系统

为了能够将文件发送到您的虚拟机,您首先需要具有一些特定的配置。 打开VirtualBox ,选择您的目标系统运行的虚拟机,然后打开设置>网络。 选择正确的适配器选项卡(如果尚未进行任何更改,则为第一个),然后从“ 附加到:”下拉菜单中选择“ 桥接适配器 ”。 之后运行虚拟机。 一旦开始,打开一个终端并进入

sudo apt-get install openssh-server
ifconfig

ifconfig将显示一些块,一个标题为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 ~ $

inet地址中显示的IP是您机器内部网络中的IP,它将是您要访问该机器的IP 地址 。 现在回到发送者系统,你知道接收者的IP。 如果您有要发送的文件和将其存储在虚拟机上的目录,您可以继续发送文件。 将[方括号]中的项目替换为实际数据:

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

如果我想将/ home / ctest / Videos目录中的文件FunnyVideo.mp4发送到具有内部IP 192.168.0.11的系统的/ home / virtualguy / Videos目录,这是什么样子

scp /home/ctest/Videos/FunnyVideo.mp4 root@192.168.0.11:/home/virtualguy/Videos

您可能会发生以下消息进入scp命令:

ctest@ctest-System-Product-Name ~ $ scp /home/ctest/Videos/FunnyVideo.mp4 root@192.168.0.11:/home/virtualguy/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 192.168.0.11
ECDSA host key for 192.168.0.11 has changed and you have requested strict checking.
Host key verification failed.
lost connection
ctest@ctest-System-Product-Name ~ $

在大多数情况下,这是由于具有给定IP的系统与上次连接到相同IP时不同的系统,例如,如果您托管了一个新的虚拟机,然后占用了与旧版本相同的IP。 要纠正此问题,请按照消息中给出的命令删除违规密钥。 在我的情况下,它是:

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

确保将路径和IP替换为与输入匹配的路径。 您也可以通过使用texteditor打开known_hosts文件并删除密钥(当然为root用户)来手动删除密钥。

如果没有这种问题出现或者你已经处理了,你会被问到是否真的要继续。 输入yes 并按Enter键确认。 然后,您将被要求接收方的root密码。 输入并再次按Enter 。 然后,复制的文件应该可以在接收者的目标目录下访问,尽管您不应该有任何权限来编写或执行它。 如果要授予您完全权限,请使用

sudo chmod 777 /home/virtualguy/Videos/FunnyVideo.mp4

并确保将路径值更改为您的文件之一。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏