Linux指令——scp:传输文件

2023-12-13 09:10:25

Linux指令——scp:传输文件

简介:

Linux文件互传指令

使用方法:

scp [可选参数] file_source file_target 
# 可选参数一般为-r,递归传输
# 举例如下:
scp /home/test/test.txt  root@192.168.1.200:/home/test/test.txt     # 本地文件传远程
scp root@192.168.1.200:/home/test/test.txt /home/test/test.txt    # 复制远程文件到本地

参考资料:

https://www.runoob.com/linux/linux-comm-scp.html

Linux scp 命令用于 Linux 之间复制文件和目录。

scp 是 secure copy 的缩写, scp 是 linux 系统下基于 ssh 登陆进行安全的远程文件拷贝命令。

scp 是加密的,rcp 是不加密的,scp 是 rcp 的加强版。

语法

scp [-1246BCpqrv] [-c cipher] [-F ssh_config] [-i identity_file]
[-l limit] [-o ssh_option] [-P port] [-S program]
[[user@]host1:]file1 [...] [[user@]host2:]file2

简易写法:

scp [可选参数] file_source file_target

参数说明:

  • 1: 强制scp命令使用协议ssh1
  • 2: 强制scp命令使用协议ssh2
  • 4: 强制scp命令只使用IPv4寻址
  • 6: 强制scp命令只使用IPv6寻址
  • B: 使用批处理模式(传输过程中不询问传输口令或短语)
  • C: 允许压缩。(将-C标志传递给ssh,从而打开压缩功能)
  • p:保留原文件的修改时间,访问时间和访问权限。
  • q: 不显示传输进度条。
  • r: 递归复制整个目录。
  • v:详细方式显示输出。scp和ssh(1)会显示出整个过程的调试信息。这些信息用于调试连接,验证和配置问题。
  • c cipher: 以cipher将数据传输进行加密,这个选项将直接传递给ssh。
  • F ssh_config: 指定一个替代的ssh配置文件,此参数直接传递给ssh。
  • i identity_file: 从指定文件中读取传输时使用的密钥文件,此参数直接传递给ssh。
  • l limit: 限定用户所能使用的带宽,以Kbit/s为单位。
  • o ssh_option: 如果习惯于使用ssh_config(5)中的参数传递方式,
  • P port:注意是大写的P, port是指定数据传输用到的端口号
  • S program: 指定加密传输时所使用的程序。此程序必须能够理解ssh(1)的选项。

使用sshpass工具来自动输入密码

安装sshpass(ubuntu系统)

sudo apt install sshpass -y

其实上面的建立信任关系的做法是最方便和安全的做法,但是在有些场景下(比如远端的authorized_keys是不能随意更改的),那么这个时候我们就可以借助sshpass这个第三方工具来完成ssh连接时的密码输入。先看一下sshpass的man手册中是如何描述的:

   sshpass - noninteractive ssh password provider

从描述上就可以清晰的了解到,sshpass的设计就是为了使用非交互的场景下输入ssh连接的密码。

sshpass的使用比较简单,先看一下帮助文档:

nfer@nfer-VirtualBox:~$ sshpass
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
-f filename   Take password to use from file
-d number     Use number as file descriptor for getting password
-p password   Provide password as argument (security unwise)
-e            Password is passed as env-var "SSHPASS"
With no parameters - password will be taken from stdin
-h Show help (this screen)
-V Print version information
At most one of -f, -d, -p or -e should be used
其中-p是直接指定密码,-f是从文件中读取密码。那么一个使用sshpass的简单例子就是:
sshpass -p nferzhuang scp a.txt [nferzhuang@192.168.1.101](mailto:nferzhuang@192.168.1.101):/home/nferzhuang/a.txt

示例代码:下载日志

rm -rf /home/user_name/logs_zip/
mkdir -p /home/user_name/logs_zip/
count=0
IP="10.0.98.9"

count=`expr $count + 1` && echo "$IP start $count"
sshpass -p qwer1234 scp -r user_name@$IP:/home/user_name/user_name_444444_logs/ /home/user_name/logs_zip/
count=`expr $count + 1` && echo "$IP start $count"
sshpass -p qwer1234 scp -r user_name@$IP:/home/user_name/user_name_555555_logs/ 

文章来源:https://blog.csdn.net/u011198687/article/details/134893428
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。