作者:站长 发布于:2019-11-28 18:41 Thursday 分类:linux
1、scp日常使用
格式:
scp [option] [源路径] [目标路径]
option:
-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)的选项。
1.1发送文件到远程服务器
scp local_file login@server_ip:server_file
例如:上传profile文件到192.168.1.1服务器的xiaobai用户的根目录下
scp /home/xiaobai/profile xiaobai@192.168.1.1:/home/xiaobai
1.2发送整个目录到远程服务器
scp -r local_dir login@server_ip:server_dir
例如:上传mytest目录到192.168.1.1服务的/home/xiaobai/QQ目录下
scp /home/xiaobai/mytest xiaobai@192.168.1.1:/home/xiaobai/QQ/
1.3从远程服务器上拷贝文件到本地
scp login@server_ip:server_file local_file
例如:将服务器192.168.1.1的/home/xiaobai/QQ/mytestfile文件拷贝到本地
scp xiaobai@192.168.1.1:/home/xiaobai/QQ/mytestfile /home/xiaobai/
1.4从远程服务器上拷贝目录到本地
scp -r login@server_ip:server_dir local_dir
例如:将192.168.1.1服务的/home/xiaobai/QQ目录******到本地
scp xiaobai@192.168.1.1:/home/xiaobai/QQ /home/xiaobai/mytest
注意:不论上传或者******,当前使用用户必须有指定的服务器目录、文件的权限,否则会报无权限
2、scp免密操作
相信大家在执行scp过程中,交互页面提示输入密码,如果在shell脚本中多处使用scp那就要多次输入密码;遇到这个问题,我也是很心累,然后找到了一些解决方案,挑出一种简单直接暴力的方式,推荐给大家。。。
2.1服务器(本机)从目标服务器上传/******文件或者文件夹
2.2生成秘钥
本机执行:ssh-keygen -t rsa
遇到提示,直接回车就OK,秘钥生成在用户的根目录的.ssh目录下。比如小白用户的/home/xiaobai/.ssh目录下
2.3 复制/home/xiaobai/.ssh/id_rsa.pub文件到目标服务器的/home/login_user/.ssh目录下,并重命名为authorized_keys
本机执行:scp /home/xiaobai/.ssh/id_rsa.pub login_user@ip:/home/login_user/.ssh/authorized_keys
这样就完成使用scp命令,不输入密码,自动传输文件了
注意:如果目标服务器上存在authorized_keys文件,请将id_rsa.pub文件内容追加到authorized_keys
原文链接:https://www.jianshu.com/p/35c8dc1eecc1