(scp基于ssh登录,所以如果没有安装ssh无法进行文件拷贝)
- 检查linux是否安装ssh服:
ssh localhost
提示’‘ssh: connect to host localhost port 22: Connection refused’’
如上所示则说明还没有安装ssh或ssh服务未启动.
2.安装
sudo apt-get install openssh-server
(使用的是debian,ubuntu,linux mint等系列)
sudo yum install openssh-server
(用的是redhat,fedora,centos等系列linux发行版)
3.开启服务:sudo service ssh start
4.连接本机验证是否开启成功:sudo ssh localhost
开启成功后就可以使用scp命令传输文件
5.如是非root用户的linux 就要进行以下配置(或切换到root用户sudo -i 或su)
sudo vim /etc/ssh/sshd_config
配置:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes
PubkeyAuthentication yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
保存退出
(即可以使用公钥/也可以使用密码验证,这里我们使用密码)
-
重启ssh服务
sudo service ssh restart
-
再次验证
ssh localhost
提示成功
尝试在linux本机使用scp
pjqdyd@DESKTOP-HO7V45M:~$ scp -r /usr/src pjqdyd@DESKTOP-HO7V45M:/tmp
即复制/usr/src 目录到本地的 /tmp 回车提示输入密码
若出现提示"scp: /tmp/: Permission denied"表示我们没有权限修改/tmp文件
8.修改文件权限
cd /usr
sudo chmod 777 src/
ll
或ls
查看文件目录, src是绿色表示所有用户有权限
cd /
sudo chmod 777 tmp/
ll
或ls
查看文件目录, tmp是绿色表示所有用户有权限
9.再次执行scp命令就可以了,进入/tmp查看文件:
-
从windows电脑复制文件到linux (这里在win桌面新建了文件夹test)
C:\Users\Z2>scp -r Desktop/test pjqdyd@DESKTOP-HO7V45M:/tmp/
(复制目录要加-r 复制文件则不用)
在linux上查看:
-
在windows电脑复制linux文件下来
C:\Users\Z2>scp -r pjqdyd@DESKTOP-HO7V45M:/tmp/src C:\Users\Z2\Desktop
(注意:要保证复制的目录/目录中的文件是有访问权限的否则会提示Permission denied)
查看桌面目录:
- 停止使用ssh
sudo service ssh stop
总结: 当然windows上也可以安装软件如xftp, winscp等图形界面来操作远程复制文件
上面的步骤中,我的win电脑是已经默认有安装OpenSsh的,在C:\Windows\System32\OpenSSH默认有可执行文件,且有环境变量, 所以可以直接在cmd中使用scp命令,如果没有,请安装OpenSsh到win电脑,并确定ssh服务已启动