Linux之scp命令的介绍以及命令行输入密码参数执行方法和常见问题解决

一、scp命令
scp命令主要用于Linux中不同主机间复制文件和目录。
scp是Linux系统下基于ssh登录进行安全的远程文件拷贝命令。
scp是加密的

二、scp使用方法
2.1、命令格式
scp [参数] [原路径] [目标路径]
命令参数:
-p 保留原文件的修改时间,访问时间和访问权限。
-q 不显示传输进度条。
-r 递归复制整个目录。
-v 详细方式显示输出。
-P port 注意是大写的P, port是指定数据传输用到的端口号

2.2、使用实例
scp命令应用:
1、从本地服务器复制到远程服务器:
(1) 复制文件

scp 本地文件路径 远程服务器用户名@远程IP:远程目录
或者
scp 本地文件路径 远程服务器用户名@远程IP:远程文件
或者
scp 本地文件路径 远程IP:远程目录
或者
scp 本地文件路径 远程IP:远程文件

注:
第1,2个指定了用户名,命令执行后需要输入用户密码,第1个仅指定了远程的目录,文件名字不变,第2个指定了文件名
第3,4个没有指定用户名,命令执行后需要输入用户名和密码,第3个仅指定了远程的目录,文件名字不变,第4个指定了文件名

(2)复制目录
命令格式:

scp -r 本地目录路径 远程服务器用户名@远程IP:远程路径  
或者  
scp -r 本地目录路径 远程服务器IP:远程路径  

注:
第1个指定了用户名,命令执行后需要输入用户密码;
第2个没有指定用户名,命令执行后需要输入用户名和密码;

三、scp命令行输入带密码的参数【无需在输入scp后还要再输入远程服务器的密码】
使用sshpass命令
命令格式:

sshpass -p 密码 scp -P 端口 源文件 目标文件

例如,当我需要对远程服务器上传文件,在命令行进行执行,并且需要进行后台运行。当执行了sshpass时,并没有启动进程,服务自动停止。
如下所示
在这里插入图片描述
报错原因:经过查找,发现是因为权限问题,因为在进行远程上传文件时,此时因为有些文件的用户权限不一样,导致权限出现问题,无法在该用户下进行远程上传

解决方法:
1、可切换至root权限 sudo -i
2、然后执行命令
sshpass -p 【远程服务器密码】 scp -r 本地目录路径 [email protected]:远程服务器文件路径
如下所示:
在这里插入图片描述
通过ps 查询进行,发现并没有启动
原因:本地服务器与远程服务器并没有进行远程TCP握手连接
解决方法:
1、首先执行 scp 命令 与远程实现文件上传,建立服务器之间的通信
2、然后再执行sshpass命令,即可实现远程上传,添加&实现后台执行
Linux之scp命令的介绍以及命令行输入密码参数执行方法和常见问题解决_第1张图片
3、然后查询远程服务器是否已经收到该文件
在这里插入图片描述
发现已经正在上传

成功~~

你可能感兴趣的:(Linux,scp,命令行输入密码)