SCP指令
有时候我们需要从另一台linux设备上获得或发送文件,尤其是进行交叉编译时,向开发板传送文件,一个较为方便的的方法是使用SCP指令.
可以通过类似如下指令进行文件传输:
scp a.c xiaoming@192.168.888.888:/home/xiaoming/ccc
将当前目录中的a.c文件,发送到IP为192.168.888.888的用户xiaoming的/home/xiaoming/ccc文件夹下
scp xiaoming@192.168.888.888:/home/xiaoming/ccc.b.c .
将IP为192.168.888.888的用户xiaoming的/home/xiaoming/ccc文件夹下的b.c文件下载到当前文件夹
安装SSH
ssh -V
//查看是否安装了SSH
如果安装了SSH会有类似下方的输出
OpenSSH_8.2p1 Ubuntu-4ubuntu0.9, OpenSSL 1.1.1f 31 Mar 2020
如果未安装,可通过如下命令安装并开启SSH服务
sudo apt-get install openssh-server
//ubantu系统,其他系统自行百度一下
sudo systemctl start ssh
//启动SSH服务
sudo systemctl enable ssh
//将SSH添加为开机自启
SCP报错及解决办法
如果出现错误.
1.首先检查目标设备名以及IP地址是否错误
2.确保自己设备与目标设备都安装并开启了SSH服务
3.如果出现类似以下的错误
The authenticity of host '192.168.888.888 (192.168.888.188)' can't be established.
ECDSA key fingerprint is SHA256:QMJDcwgfmEPrqVmAp/NrBqXh2r02DKEc2gtcM7vmL2o.
Are you sure you want to continue connecting (yes/no)?
Host key verification failed.
lost connection
可能的原因是本机中没有目标设备的SSH密钥(正常情况下第一次连接应该自动生成)
可以通过以下指令强行连接目标设备
ssh -o StrictHostKeyChecking=no xiaoming@192.168.888.888
这将会直接进入目标服务器中.输入exit可以退出.
exit
//退出目标服务器
此时scp指令就可以成功使用了.此时如果显示如下错误
Permission denied
//文件操作权限不足
需要目标设备更改文件权限,将权限改为所有用户可读可写可执行
chmod 777 /home/xiaoming/ccc
//将ccc文件夹的权限设置为所有人可读可写可执行
到这里scp指令应该就可以正常使用了,在linux设备间交互文件十分方便