美文网首页
SCP远程拷贝文件

SCP远程拷贝文件

作者: 逍遥_yjz | 来源:发表于2021-10-12 16:38 被阅读0次

    Linux 远程传输文件及目录

    SCP

    复制文件或目录命令:

    复制文件:

    (1)将本地文件拷贝到远程
    scp 文件名 用户名@计算机IP或者计算机名称:远程路径

    本地123.57.2.2客户端

    scp ./20210927023400000.JPG root@123.57.2.3:/home
    

    (2)从远程将文件拷回本地

    本地123.57.2.2客户端取远程服务器123.57.2.3上的文件

    scp root@123.57.2.3:/home/20211009013000000.JPG /home
    

    复制目录:

    (1)将本地目录拷贝到远程
    scp -r 目录名 用户名@计算机IP或者计算机名称:远程路径

    scp -r ./2021 root@123.57.2.3:/home
    

    (2)从远程将目录拷回本地
    scp -r 用户名@计算机IP或者计算机名称:目录名 本地路径

    scp -r root@123.57.2.3:/home/1009 /home
    
    语法详解:
    
    -1246BCpqrv:                     
    
     -1 强制scp 用协议1
    
    -2 强制scp 用协议2
    
    -4 强制scp用IPV4的网址
    
    -6 强制scp用IPV6的网址
    
    -B 选择批处理模式(防止输入密码)
    
    -C 允许压缩。 标注-C到ssh(1)来允许压缩
    
    -p指定修改次数,连接次数,还有对于原文件的模式
    
    -q把进度参数关掉
    
    -r递归的复制整个文件夹
    
    -v详细方式显示输出
    
    -c cipher:选择cipher来加密数据传输。
    
    -F ssh_config: 指定ssh的配置文件    
    
    -I identity_file:   选择被RSA认证读取私有密码的文件。             
    
    -I limit:限制传输带宽,也就是速度 用Kbit/s的速度                    
    
    -o ssh_option:可以把ssh_config中的配置格式传到ssh中。                  
    
    -P port:   指定ssh端口
    
    -S program:指定一个加密程序。
    
    user@      用户
    
    host1      主机(可以是ip,也可以是域名)
    例如:
    
    scp -i [密钥文件路径] -r user@ip:要下载文件的绝对路径  本地路径
    

    SCP 免密远程拷贝文件

    基于公钥和私钥的信任办法

    需求:把本地A(123.57.2.2)/home/20211009013000000.JPG文件传输至123.57.2.3服务器B,账号root 目录为/home/

    方法一:基于公钥和私钥的信任办法

    命令:

    ssh-keygen -t rsa  
    

    1.在A下执行ssh-keygen -t rsa

    此命令会在/root/.ssh/目录下生成id_rsa 和 id_rsa.pub 两个文件
    复制备份一份id_rsa.pub 命名为 id_rsa.pub.A

    2.在B下执行ssh-keygen -t rsa

    会在/root/.ssh/目录下生成id_rsa 和 id_rsa.pub 两个文件

    3.在 B 的 /root/.ssh 下创建authorized_keys文件,把A 中 id_rsa.pub.A 文件 传到 B /root/.ssh 下

    通过cat命令把id_rsa.pub.A 写到 authorized_keys 文件中
    cat id_rsa.pub.A >> authorized_keys

    4.执行scp /home/20211009013000000.JPG root@123.57.2.3:/home/,将不会需要密码

    #step 1: 分别登录A和B服务器执行命令ssh-keygen命令生成公钥
    ssh-keygen -t rsa #在/root/.ssh/目录下有id_rsa.pub这样公钥文件
    #step 2: 登录到123.57.2.2,执行
    cd /root/.ssh/
    cp -r id_rsa id_rsa.pub.A 
    cp -f id_rsa.pub authorized_keys
    #step 3:将authorized_keys远程拷贝到123.57.2.3:/root/.ssh/
    scp authorized_keys 123.57.2.3:/root/.ssh/ #这时要输入密码
    #step 4:传输文件
    scp /home/20211009013000000.JPG root@123.57.2.3:/home/ #此时不需要输入密码
    

    Note:

    1. Linux中的scp命令
    常规命令格式: scp local_file remote_username@remote_ip:remote_file 
    简化命令格式: scp local_file remote_ip:remote_file
    
    1. ssh-keygen -t rsa 命令后,然后全部回车,采用默认值,这样生成了一对密钥,存放在用户目录的~/.ssh下。
    2. 要保证.ssh和authorized_keys都只有用户自己有写权限。否则验证无效。

    sshpass

    方法二:sshpass

    sshpass的安装:
    Ubuntu:

    apt-get install sshpass
    

    centos:

    下载地址:http://sourceforge.net/projects/sshpass/

    wget http://sourceforge.net/projects/sshpass/files/sshpass/1.05/sshpass-1.05.tar.gz
    
    yum -y install gcc
    
    tar xvzf sshpass-1.05.tar.gz
    
    cd sshpass-1.05.tar.gz
    
    ./configure
    
    make
    
    make install
    
    sshpass -p 密码 scp -r 1.txt root@10.1.1.1:/root 
    sshpass -f 存放密码的文件 scp -r 1.txt root@10.1.1.1:/root
    

    相关文章

      网友评论

          本文标题:SCP远程拷贝文件

          本文链接:https://www.haomeiwen.com/subject/emtjoltx.html