Linux SCP命令详解
一开始先说明下scp: scp是linux下的远程拷贝 命令:
(1)将本地文件拷贝到远程:scp 文件名 用户名@计算机IP或者计算机名称:远程路径
(2)从远程将文件拷回本地:scp 用户名@计算机IP或者计算机名称:文件名 本地路径
(3)将本地目录拷贝到远程:scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径
(4)从远程将目录拷回本地:scp -r 用户名@计算机IP或者计算机名称:目录名本地路径
使用scp命令需要服务端linux提供ssh服务(linux默认是没有安装ssh服务的)
1.是否安装ssh:可连接相应的ssh服务查看,ssh host;如出现:ssh: connect to host *** port 22: Connection refused,说明尚未安装ssh服务。
2.安装ssh服务:sudo apt-get install openssh-server 自动安装ssh服务。
3.启动:sudo /etc/init.d/ssh start
4.停止:sudo /etc/init.d/ssh stop
5.配置:ssh默认的端口是22,可以修改配置文件更改端口,然后重启ssh服务即可。(注:配置文件/etc/ssh/sshd_config)
例如将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 *就可以了。
Done.
下面介绍下可能出现的错误及异常情况。
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
全部删除里面的信息即可,记住不是删除这个文件,是打开文件,删除里面的信息。