/ 中存储网

Ubuntu 10.10与Fedora 14下使用scp实现文件传输的方法

2015-08-29 21:16:27 来源:中存储网

实验室里的机子主要装了两种Linux,Ubuntu和Fedora,平时大家传资料,都是用U盘拖来脱去,甚是不便,于是,今天就写一篇教程,教大家如何使用Linux自带的scp命令来实现文件传输。

1.首先要保证两个机子间能ping通。例如一个的ip地址是192.168.82.1(查看本机ip:$ ifconfig),用户名为citA,另一台机子的ip地址是192.168.82.2,用户名为citB。

在citA的终端中输入$ ping 192.168.82.2 ,一旦返回

PING 192.168.82.2 (192.168.82.2) 56(84) bytes of data.
From 192.168.82.1 icmp_seq=1 Destination Host Unreachable
From 192.168.82.1 icmp_seq=2 Destination Host Unreachable
....

说明网络连接有问题,请检查网线,网卡等设备。一旦返回

PING 192.168.82.2 (192.168.82.2) 56(84) bytes of data.
64 bytes from 192.168.82.2: icmp_req=1 ttl=64 time=0.229 ms
64 bytes from 192.168.82.2: icmp_req=2 ttl=64 time=0.215 ms
64 bytes from 192.168.82.2: icmp_req=3 ttl=64 time=0.224 ms

....

说明两机连通,可以进行下一步操作。

2.使用scp命令传文件。

例如将citA的/home/citA/Desktop/a文件传到citB的/home/citB/Desktop/里,有两种方法:

(1)进入citA的Desktop目录中

$ cd /home/citA/Desktop

然后执行scp命令

$ scp a citB@192.168.82.2:/home/citB/Desktop

格式为

$ scp 文件名 接受端用户名@接受端ip地址:接受端路径

(2)或者在任意目录下,输入发送端的完整路径

$ scp /home/citA/Desktop/a citB@192.168.82.2:/home/citB/Desktop

格式为

$ scp 发送端路径+文件名 接受端用户名@接受端ip地址:接受端路径

当然了,你要有对方用户的密码才可以。一旦是文件夹,使用scp -r即可。一旦想将当前目录下所有文件夹全部发送,scp -r *就可以了。

搞定。

接下来介绍下可能出现的错误及异常情况。

1.一旦向fedora系统的机子传送文件时出现

ssh: connect to host 192.168.82.15 port 22: No route to host lost connection

可能是由于fedora的系统默认关闭了传输文件的22端口导致的,大家用命令打开它,在接受端上输入:

$ su

输入密码,进入最高权限,然后开启22端口:

# iptables -I INPUT -p tcp --dport 22 -j ACCEPT

此时,再次尝试传输命令,一旦依旧报错,还是进入接受端,在最高权限下,重启它的sshd服务,注意要输入完整路径名:

# /etc/init.d/sshd restart

此时再次尝试传输,应该会成功。

2.一旦出现 Permission denied,这个问题主要是权限问题。

(1)首先检查自己要发送的文件是否有自己可以执行的权限,使用

$ ls -l 文件名

查看,一旦权限不足,可以使用

$ chmod 777 文件名

来提升文件权限。

(2)可能是路径的权限问题

检查自己是否具有向接受端路径写的权限,例如,当处在普通权限时,一旦向接受端的 / 目录下写,就必定是Permission denie的。

3.对于 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

是由于先前已经连接过此接受端,本机中就会存储接受端的历史信息,结果再次连接时接受端的信息出现了变化,与本机中存储的历史信息不符,导致的错误,只要将本机中存储的历史信息删除即可。

按照报错信息提示,进入/home/cit/.ssh/

$ cd /home/cit/.ssh/

使用vi编辑器或gedit打开known_hosts

$ vi known_hosts

$ gedit known_hosts

全部删除里面的信息即可,记住不是删除这个文件,是打开文件,删除里面的信息。

至此,scp文件传输应该就可以搞定了。