一,说明:两台机器的平台和ip

1,a服务器:

centos8:ip:121.122.123.47

版本

[root@yjweb ~]# cat /etc/redhat-release
CentOS Linux release 8.0.1905 (Core)

2,    j服务器:

centos6:ip:121.122.7.134

版本:

[root@os3 ~]# cat /etc/redhat-release
CentOS release 6.10 (Final)

我们的目示是通过scp程序把a服务器上的文件复制到j服务器上

说明:ip地址仅供演示,非真实

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: https://github.com/liuhongdi/

说明:作者:刘宏缔 邮箱: 371125307@qq.com

二,在a服务器上生成密钥:

1,生成密钥

[root@yjweb ~]# ssh-keygen -t rsa

说明:中间一路回车即可,

不要设置密码

说明:-t参数可以指定四种算法类型

[-t dsa | ecdsa | ed25519 | rsa]

我们选择 rsa

说明:查看参数可以使用通用的帮助命令:

[root@yjweb ~]# man ssh-keygen 

2,密钥生成后,可以从用户的home目录下.ssh目录看到

[root@yjweb ~]# ls .ssh/
authorized_keys id_rsa id_rsa.pub known_hosts

三,从a服务器复制公钥到j服务器

1,用ssh-copy-id命令复制公钥到j服务器上

[root@yjweb ~]# ssh-copy-id -i .ssh/id_rsa.pub root@121.122.7.134
/bin/ssh-copy-id: INFO: Source of key(s) to be installed: ".ssh/id_rsa.pub"
/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@121.122.7.134's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'root@121.122.7.134'"
and check to make sure that only the key(s) you wanted were added.

说明:ssh-copy-id属于这个rpm包,如发现不存在可以通过yum安装

[root@yjweb ~]# whereis ssh-copy-id
ssh-copy-id: /usr/bin/ssh-copy-id /usr/share/man/man1/ssh-copy-id.1.gz
[root@yjweb ~]# rpm -qf /usr/bin/ssh-copy-id
openssh-clients-8.0p1-4.el8_1.x86_64

2,登录到j服务器,查看authorized_keys

[root@os3 ~]# more .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDiZNKuLsJqi0M......

可以看到我们在a服务器的公钥已经成功添加到了j服务器的 authorized_keys文件上

四,从a服务器用scp复制一个文件到j服务器

注意看是否会提示输入j服务器的密码

1,检查j服务器上的目标文件夹

[root@os3 test]# ll /data/dev/think_file/test/
total 0

2,在a服务器上执行scp命令

[root@yjweb orig]# scp -P 22 /data/web/think_file/cover/orig/1/10.gif root@121.122.7.134:/data/dev/think_file/test/

说明:

-P 22:   在此处指定目标服务器的端口
root 登录目标服务器用的账号
121.122.7.134 目标服务器用的ip
/data/dev/think_file/test/ 在目标服务器上的路径

3,回到j服务器,再次检查测试用的目标文件夹

[root@os3 test]# ll /data/dev/think_file/test/
total 1300
-rw-r--r-- 1 root root 1330533 Mar 16 14:54 10.gif

五,如何在远程服务器上创建目录

[root@yjweb ~]# ssh -p 22 root@121.122.7.134 "mkdir -p /data/dev/think_file_test/cover/orig/1/"

说明:

-p : 用来指定目标服务器的端口号

六,如何复制一整个目录到目标机器?

1,加参数 -r即可

[root@yjweb web]# scp -P 22 -r /data/web/think_file/cover/orig/1/ root@121.122.7.134:/data/dev/think_file/test/
7.gif 100% 548KB 489.4KB/s 00:01
9.gif 100% 542KB 700.2KB/s 00:00
11.png 100% 997KB 1.4MB/s 00:00
10.gif 100% 1299KB 1.3MB/s 00:00
8.gif 100% 440KB 448.9KB/s 00:00

2,一点值得说明的知识:

-r      Recursively copy entire directories.  Note that scp follows symbolic links encountered in the tree traversal.

-r 用来复制整个目录

需要注意的是scp会把符号链接下的文件也复制过来

如何避免这个问题?

可以先把包含符号链接的源目录打包成tar包,
远程复制tar包过来后再解开

centos平台scp通过密钥远程复制文件(免密登录)的更多相关文章

  1. Linux使用SCP命令不使用密钥直接进行远程复制(SSH免密登录)

    假设A服务器要把文件复制到B服务器上 首先我们要在A服务器上生成密钥对 参考:https://www.cnblogs.com/pxblog/p/14396409.html 然后在把生成的密钥公钥id_ ...

  2. 配置hadoop用户SSH无密码登陆 的2种方式 落脚点是 可以ssh免密进入的主机名写入动作发出主机的 known_hosts,而被无密进入主机的authorized_keys文件 免密登录

    cat /proc/versionLinux version 3.10.0-327.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version ...

  3. ansible用authorized_key模块批量推送密钥到受控主机(免密登录)(ansible2.9.5)

    一,ansible的authorized_key模块的用途 用来配置密钥实现免密登录: ansible所在的主控机生成密钥后,如何把公钥上传到受控端? 当然可以用ssh-copy-id命令逐台手动处理 ...

  4. Linux/(centos、unix等)的ssh双向免密登录原理和实现

    原理: 双向,顾名思义,双方互通,此处的意思是多台 linux 两两免密登录. 双向比单向多了些操作,单向只需把某一个linux的公钥发送给其他linux即可,而双向要实现集群中的每一台机器都保存其他 ...

  5. linux scp 远程复制文件

    1.从本机复制文件到远程scp 文件名 远程计算机用户名@远程计算机的ip:远程计算机存放该文件的路径2.从远程复制文件到本机:scp 远程计算机用户名@远程计算机ip:文件名 存放该文件的本机路径3 ...

  6. 远程复制文件scp使用

    1. install sudo apt-get install openssh-client openssh-server 2. login ssh remoteuser@remoteIP 3. co ...

  7. Linux远程复制文件

    将本机文件app.properties 复制到用户为root,ip为ip的具体路径下去 scp app.properties root@ip:/apps/javaconf/common/ 其他参考: ...

  8. linux 远程复制文件或文件夹

    linux 远程复制文件或文件夹. 复制当前服务器的文件夹或文件到指定服务器的文件夹. #远程复制文件夹: scp -r /home/administrator/test/ root@192.168. ...

  9. Linux 远程复制文件

    Linux 远程复制文件 如果想把机器A上面的dir目录下面的所有文件复制到机器B的dir目录下,我们可以使用nc命令来完成 在机器A的dir目录下面执行: tar -czf - * | nc -l ...

随机推荐

  1. Unity接入多个SDK的通用接口开发与资源管理(二)

    接着上篇,本篇对SDK接口进行封装.在开始之前,需要先了解下面知识. (1)unity与android之间的交互 unity通过下面方式调用android中的函数: 方法一: AndroidJavaC ...

  2. oracle数据处理之sql*loader(一)

    SQL*Loader是oracle提供的可以从多种平面文件中向数据库中加载数据的工具,它比较适合业务分析类型数据库(数据仓库);使用sqlldr工具可以在很短的时间内向数据库中加载大量的数据,像把制作 ...

  3. Unit3:控件\布局

    控件 TextView <TextView android:layout_width="match_parent" android:layout_height="w ...

  4. [LeetCode]1071. 字符串的最大公因子(gcd)

    题目 对于字符串 S 和 T,只有在 S = T + ... + T(T 与自身连接 1 次或多次)时,我们才认定 "T 能除尽 S". 返回最长字符串 X,要求满足 X 能除尽 ...

  5. canvas学习作业,模仿做一个祖玛的小游戏

    这个游戏的原理我分为11个步骤,依次如下: 1.布局, 2.画曲线(曲线由两个半径不同的圆构成) 3.画曲线起点起始圆和曲线终点终止圆 4.起始的圆动起来, 5.起始的圆沿曲线走起来 6.起始的圆沿曲 ...

  6. 掌握Rabbitmq几个重要概念,从一条消息说起

    RabbitMQ 是功能强大的开源消息代理.根据官网称:也是使用量最广泛的消息队列.就像他的口号“Messaging that just works”,开箱即用使用简单,支持多种消息传输协议(AMQP ...

  7. Python爬虫开发者工具介绍

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. chrome 开发者工具 当我们爬取不同的网站时,每个网站页面的实现方式各不相同,我们需要对 ...

  8. mysql读写分离--一主多从,冗余存储

    转载了https://blog.csdn.net/u013421629/article/details/78793966 https://blog.csdn.net/justdb/article/de ...

  9. LevelDb 101学习

    转自http://www.cnblogs.com/haippy/archive/2011/12/04/2276064.html LevelDb日知录之一:LevelDb 101 说起LevelDb也许 ...

  10. hystrix源码之概述

    概述 hystrix核心原理是通过代理执行用户命令,记录命令执行的metrics信息,通过这些metrics信息进行降级和熔断. 源码结构包括一下几个部分: 熔断器 熔断器就是hystrix用来判断调 ...