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:
- Linux中的scp命令
常规命令格式: scp local_file remote_username@remote_ip:remote_file
简化命令格式: scp local_file remote_ip:remote_file
- ssh-keygen -t rsa 命令后,然后全部回车,采用默认值,这样生成了一对密钥,存放在用户目录的~/.ssh下。
- 要保证.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
网友评论