美文网首页
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